Add support for storing rejected events in EventContext and data stores

This commit is contained in:
Erik Johnston 2015-01-22 15:50:17 +00:00
parent b390bf39f2
commit b1b85753d7
6 changed files with 83 additions and 11 deletions

View file

@ -458,10 +458,12 @@ class SQLBaseStore(object):
return [e for e in events if e]
def _get_event_txn(self, txn, event_id, check_redacted=True,
get_prev_content=False):
get_prev_content=False, allow_rejected=False):
sql = (
"SELECT internal_metadata, json, r.event_id FROM event_json as e "
"SELECT internal_metadata, json, r.event_id, reason "
"FROM event_json as e "
"LEFT JOIN redactions as r ON e.event_id = r.redacts "
"LEFT JOIN rejections as rej on rej.event_id = e.event_id "
"WHERE e.event_id = ? "
"LIMIT 1 "
)
@ -473,13 +475,16 @@ class SQLBaseStore(object):
if not res:
return None
internal_metadata, js, redacted = res
internal_metadata, js, redacted, rejected_reason = res
return self._get_event_from_row_txn(
txn, internal_metadata, js, redacted,
check_redacted=check_redacted,
get_prev_content=get_prev_content,
)
if allow_rejected or not rejected_reason:
return self._get_event_from_row_txn(
txn, internal_metadata, js, redacted,
check_redacted=check_redacted,
get_prev_content=get_prev_content,
)
else:
return None
def _get_event_from_row_txn(self, txn, internal_metadata, js, redacted,
check_redacted=True, get_prev_content=False):