Add storage method have_events

pull/42/head
Erik Johnston 2015-01-23 15:42:52 +00:00
parent ca65a9d03e
commit 3b9cc882a5
1 changed files with 29 additions and 0 deletions

View File

@ -422,6 +422,35 @@ class DataStore(RoomMemberStore, RoomStore,
],
)
def have_events(self, event_ids):
"""Given a list of event ids, check if we have already processed them.
Returns:
dict: Has an entry for each event id we already have seen. Maps to
the rejected reason string if we rejected the event, else maps to
None.
"""
def f(txn):
sql = (
"SELECT e.event_id, reason FROM events as e "
"LEFT JOIN rejections as r ON e.event_id = r.event_id "
"WHERE event_id = ?"
)
res = {}
for event_id in event_ids:
txn.execute(sql, (event_id,))
row = txn.fetchone()
if row:
_, rejected = row
res[event_id] = rejected
return res
return self.runInteraction(
"have_events", f,
)
def schema_path(schema):
""" Get a filesystem path for the named database schema