diff --git a/r2/r2/controllers/api.py b/r2/r2/controllers/api.py index 2b323585e..145c71fb3 100755 --- a/r2/r2/controllers/api.py +++ b/r2/r2/controllers/api.py @@ -360,7 +360,6 @@ class ApiController(RedditController, OAuth2ResourceController): cheater = (errors.CHEATER, None) in c.errors) if save: r = l._save(c.user) - queries.new_savehide(r) #set the ratelimiter if should_ratelimit: @@ -908,7 +907,6 @@ class ApiController(RedditController, OAuth2ResourceController): # auto-hide links that are reported elif isinstance(thing, Link): r = thing._hide(c.user) - queries.new_savehide(r) # TODO: be nice to be able to remove comments that are reported # from a user's inbox so they don't have to look at them. elif isinstance(thing, Comment): @@ -1734,8 +1732,6 @@ class ApiController(RedditController, OAuth2ResourceController): def POST_save(self, thing): if not thing: return r = thing._save(c.user) - if r: - queries.new_savehide(r) @noresponse(VUser(), VModhash(), @@ -1744,8 +1740,6 @@ class ApiController(RedditController, OAuth2ResourceController): def POST_unsave(self, thing): if not thing: return r = thing._unsave(c.user) - if r: - queries.new_savehide(r) def collapse_handler(self, things, collapse): if not things: @@ -1839,8 +1833,6 @@ class ApiController(RedditController, OAuth2ResourceController): def POST_hide(self, thing): if not thing: return r = thing._hide(c.user) - if r: - queries.new_savehide(r) @noresponse(VUser(), VModhash(), @@ -1849,8 +1841,6 @@ class ApiController(RedditController, OAuth2ResourceController): def POST_unhide(self, thing): if not thing: return r = thing._unhide(c.user) - if r: - queries.new_savehide(r) @validatedForm(VUser(), @@ -1979,7 +1969,6 @@ class ApiController(RedditController, OAuth2ResourceController): elif action == 'save': link = max(links, key = lambda x: x._score) r = link._save(c.user) - queries.new_savehide(r) return self.redirect("/static/css_%sd.png" % action) return self.redirect("/static/css_submit.png") diff --git a/r2/r2/lib/db/queries.py b/r2/r2/lib/db/queries.py index 68c035614..aa5986295 100755 --- a/r2/r2/lib/db/queries.py +++ b/r2/r2/lib/db/queries.py @@ -20,7 +20,7 @@ # Inc. All Rights Reserved. ############################################################################### -from r2.models import Account, Link, Comment, Vote, SaveHide, Report +from r2.models import Account, Link, Comment, Vote, Report from r2.models import Message, Inbox, Subreddit, ModContribSR, ModeratorInbox, MultiReddit from r2.lib.db.thing import Thing, Merge from r2.lib.db.operators import asc, desc, timeago @@ -527,17 +527,12 @@ def get_liked(user): 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_query(UserQueryCache, sort=[desc('action_date')]) def get_hidden_links(user_id): return -@cached_userrel_query -def get_saved(user): - return rel_query(SaveHide, user, 'save') +def get_hidden(user): + return get_hidden_links(user) @cached_query(UserQueryCache, sort=[desc('action_date')]) def get_saved_links(user_id, sr_id): @@ -547,6 +542,11 @@ def get_saved_links(user_id, sr_id): def get_saved_comments(user_id, sr_id): return +def get_saved(user, sr_id=None): + sr_id = sr_id or 'none' + queries = [get_saved_links(user, sr_id), get_saved_comments(user, sr_id)] + return MergedCachedQuery(queries) + @cached_srrel_query def get_subreddit_messages(sr): return rel_query(ModeratorInbox, sr, 'inbox') @@ -996,18 +996,6 @@ def set_unread(messages, to, unread, mutator=None): if not mutator: m.send() -def new_savehide(rel): - user = rel._thing1 - name = rel._name - with CachedQueryMutator() as m: - if name == 'save': - m.insert(get_saved(user), [rel]) - elif name == 'unsave': - m.delete(get_saved(user), [rel]) - elif name == 'hide': - m.insert(get_hidden(user), [rel]) - elif name == 'unhide': - m.delete(get_hidden(user), [rel]) def changed(things, boost_only=False): """Indicate to search that a given item should be updated in the index""" @@ -1307,8 +1295,6 @@ def update_user(user): get_sent(user), get_liked(user), get_disliked(user), - get_saved(user), - get_hidden(user), get_submitted(user, 'new', 'all'), get_comments(user, 'new', 'all')] for q in results: diff --git a/r2/r2/models/link.py b/r2/r2/models/link.py index 799517146..07730bdae 100755 --- a/r2/r2/models/link.py +++ b/r2/r2/models/link.py @@ -163,14 +163,10 @@ class Link(Thing, Printable): return cls._somethinged(SaveHide, user, link, 'save') def _save(self, user): - # dual-write CassandraSaves - CassandraSave._save(user, self) LinkSavesByAccount._save(user, self) return self._something(SaveHide, user, self._saved, 'save') def _unsave(self, user): - # dual-write CassandraSaves - CassandraSave._unsave(user, self) LinkSavesByAccount._unsave(user, self) return self._unsomething(user, self._saved, 'save') @@ -186,12 +182,10 @@ class Link(Thing, Printable): return cls._somethinged(SaveHide, user, link, 'hide') def _hide(self, user): - CassandraHide._hide(user, self) LinkHidesByAccount._hide(user, self) return self._something(SaveHide, user, self._hidden, 'hide') def _unhide(self, user): - CassandraHide._unhide(user, self) LinkHidesByAccount._unhide(user, self) return self._unsomething(user, self._hidden, 'hide') @@ -346,8 +340,8 @@ class Link(Thing, Printable): if user_is_loggedin: try: - saved = CassandraSave._fast_query(user, wrapped) - hidden = CassandraHide._fast_query(user, wrapped) + saved = LinkSavesByAccount.fast_query(user, wrapped) + hidden = LinkHidesByAccount.fast_query(user, wrapped) except tdb_cassandra.TRANSIENT_EXCEPTIONS as e: g.log.warning("Cassandra save/hide lookup failed: %r", e) saved = hidden = {} @@ -1242,63 +1236,6 @@ class Message(Thing, Printable): class SaveHide(Relation(Account, Link)): pass class Click(Relation(Account, Link)): pass -class SimpleRelation(tdb_cassandra.Relation): - _use_db = False - _read_consistency_level = tdb_cassandra.CL.ONE - - @classmethod - def _create(cls, user, link, write_consistency_level = None): - n = cls(thing1_id = user._id36, - thing2_id = link._id36) - n._commit(write_consistency_level=write_consistency_level) - return n - - @classmethod - def _uncreate(cls, user, link): - try: - cls._fast_query(user, link)._destroy() - except tdb_cassandra.NotFound: - pass - - -class CassandraSave(SimpleRelation): - _use_db = True - _cf_name = 'Save' - _connection_pool = 'main' - - _thing1_cls = Account - _thing2_cls = Link - - @classmethod - def _save(cls, *a, **kw): - return cls._create(*a, **kw) - - @classmethod - def _unsave(cls, *a, **kw): - return cls._uncreate(*a, **kw) - - def _on_create(self): - return SimpleRelation._on_create(self) - - def _on_destroy(self): - return SimpleRelation._on_destroy(self) - -class CassandraHide(SimpleRelation): - _use_db = True - _cf_name = 'Hide' - _ttl = 7*24*60*60 - _connection_pool = 'main' - - _thing1_cls = Account - _thing2_cls = Link - - @classmethod - def _hide(cls, *a, **kw): - return cls._create(*a, **kw) - - @classmethod - def _unhide(cls, *a, **kw): - return cls._uncreate(*a, **kw) class _SaveHideByAccount(tdb_cassandra.DenormalizedRelation): @classmethod