def migrating_cached_query(model, filter_fn=filter_identity): """Returns a CachedResults object that has a new-style cached query attached as "new_query". This way, reads will happen from the old query cache while writes can be made to go to both caches until a backfill migration is complete.""" decorator = cached_query(model, filter_fn) def migrating_cached_query_decorator(fn): wrapped = decorator(fn) def migrating_cached_query_wrapper(*args): new_query = wrapped(*args) old_query = make_results(new_query.query, filter_fn) old_query.new_query = new_query return old_query return migrating_cached_query_wrapper return migrating_cached_query_decorator
q = rel._query(rel.c._thing1_id == thing_id, rel.c._t2_deleted == False, rel.c._name == name, sort = desc('_date'), eager_load = True, thing_data = not g.use_query_cache ) if filters: q._filter(*filters) return q vote_rel = Vote.rel(Account, Link) cached_userrel_query = cached_query(UserQueryCache, filter_thing2) cached_srrel_query = cached_query(SubredditQueryCache, filter_thing2) migrating_cached_userrel_query = migrating_cached_query(UserQueryCache, filter_thing2) migrating_cached_srrel_query = migrating_cached_query(SubredditQueryCache, filter_thing2) @migrating_cached_userrel_query def get_liked(user): return rel_query(vote_rel, user, '1') @migrating_cached_userrel_query def get_disliked(user): return rel_query(vote_rel, user, '-1') @cached_userrel_query def get_hidden(user): return rel_query(SaveHide, user, 'hide')
q = rel._query(rel.c._thing1_id == thing_id, rel.c._t2_deleted == False, rel.c._name == name, sort = desc('_date'), eager_load = True, thing_data = not g.use_query_cache ) if filters: q._filter(*filters) return q vote_rel = Vote.rel(Account, Link) cached_userrel_query = cached_query(UserQueryCache, filter_thing2) cached_srrel_query = cached_query(SubredditQueryCache, filter_thing2) @cached_userrel_query def get_liked(user): return rel_query(vote_rel, user, '1') @cached_userrel_query def get_disliked(user): return rel_query(vote_rel, user, '-1') @cached_userrel_query def get_hidden(user): return rel_query(SaveHide, user, 'hide') @cached_userrel_query