Rearrange storage modules

This commit is contained in:
Erik Johnston 2015-03-20 13:52:56 +00:00
parent d288d273e1
commit cb8162d3d1
7 changed files with 486 additions and 509 deletions

View file

@ -15,6 +15,8 @@
from ._base import SQLBaseStore
from twisted.internet import defer
from synapse.util.stringutils import random_string
import logging
@ -125,6 +127,36 @@ class StateStore(SQLBaseStore):
or_replace=True,
)
@defer.inlineCallbacks
def get_current_state(self, room_id, event_type=None, state_key=""):
del_sql = (
"SELECT event_id FROM redactions WHERE redacts = e.event_id "
"LIMIT 1"
)
sql = (
"SELECT e.*, (%(redacted)s) AS redacted FROM events as e "
"INNER JOIN current_state_events as c ON e.event_id = c.event_id "
"INNER JOIN state_events as s ON e.event_id = s.event_id "
"WHERE c.room_id = ? "
) % {
"redacted": del_sql,
}
if event_type and state_key is not None:
sql += " AND s.type = ? AND s.state_key = ? "
args = (room_id, event_type, state_key)
elif event_type:
sql += " AND s.type = ?"
args = (room_id, event_type)
else:
args = (room_id, )
results = yield self._execute_and_decode("get_current_state", sql, *args)
events = yield self._parse_events(results)
defer.returnValue(events)
def _make_group_id(clock):
return str(int(clock.time_msec())) + random_string(5)