Fix up typos and correct sql queries
This commit is contained in:
parent
7e681ad778
commit
2c46bb6208
|
@ -201,7 +201,7 @@ class MessageHandler(BaseHandler):
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def get_feedback(self, event_id):
|
def get_feedback(self, event_id):
|
||||||
yield self.auth.check_joined_room(room_id, user_id)
|
# yield self.auth.check_joined_room(room_id, user_id)
|
||||||
|
|
||||||
# Pull out the feedback from the db
|
# Pull out the feedback from the db
|
||||||
fb = yield self.store.get_feedback(event_id)
|
fb = yield self.store.get_feedback(event_id)
|
||||||
|
@ -690,13 +690,7 @@ class RoomMemberHandler(BaseHandler):
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def _do_local_membership_update(self, event, membership, broadcast_msg):
|
def _do_local_membership_update(self, event, membership, broadcast_msg):
|
||||||
# store membership
|
# store membership
|
||||||
store_id = yield self.store.store_room_member(
|
store_id = yield self.store.persist_event(event)
|
||||||
user_id=event.target_user_id,
|
|
||||||
sender=event.user_id,
|
|
||||||
room_id=event.room_id,
|
|
||||||
content=event.content,
|
|
||||||
membership=membership
|
|
||||||
)
|
|
||||||
|
|
||||||
# Send a PDU to all hosts who have joined the room.
|
# Send a PDU to all hosts who have joined the room.
|
||||||
destinations = yield self.store.get_joined_hosts_for_room(
|
destinations = yield self.store.get_joined_hosts_for_room(
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.events.room import (
|
from synapse.api.events.room import (
|
||||||
RoomMemberEvent, MessageEvent, RoomTopicEvent, FeedbackEvent,
|
RoomMemberEvent, MessageEvent, RoomTopicEvent, FeedbackEvent,
|
||||||
|
@ -52,7 +53,7 @@ class DataStore(RoomMemberStore, RoomStore,
|
||||||
elif event.type == RoomConfigEvent.TYPE:
|
elif event.type == RoomConfigEvent.TYPE:
|
||||||
yield self._store_room_config(event)
|
yield self._store_room_config(event)
|
||||||
|
|
||||||
self._store_event(event)
|
yield self._store_event(event)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def get_event(self, event_id):
|
def get_event(self, event_id):
|
||||||
|
@ -76,14 +77,13 @@ class DataStore(RoomMemberStore, RoomStore,
|
||||||
def _store_event(self, event):
|
def _store_event(self, event):
|
||||||
vals = {
|
vals = {
|
||||||
"event_id": event.event_id,
|
"event_id": event.event_id,
|
||||||
"event_type": event.type,
|
"type": event.type,
|
||||||
"sender": event.user_id,
|
|
||||||
"room_id": event.room_id,
|
"room_id": event.room_id,
|
||||||
"content": json.dumps(event.content),
|
"content": json.dumps(event.content),
|
||||||
}
|
}
|
||||||
|
|
||||||
unrec = {k: v for k, v in event.get_full_dict() if k not in vals.keys()}
|
unrec = {k: v for k, v in event.get_full_dict().items() if k not in vals.keys()}
|
||||||
val["unrecognized_keys"] = json.dumps(unrec)
|
vals["unrecognized_keys"] = json.dumps(unrec)
|
||||||
|
|
||||||
yield self._simple_insert("events", vals)
|
yield self._simple_insert("events", vals)
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ class DataStore(RoomMemberStore, RoomStore,
|
||||||
vals = {
|
vals = {
|
||||||
"event_id": event.event_id,
|
"event_id": event.event_id,
|
||||||
"room_id": event.room_id,
|
"room_id": event.room_id,
|
||||||
"event_type": event.event_type,
|
"type": event.type,
|
||||||
"state_key": event.state_key,
|
"state_key": event.state_key,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,16 +103,16 @@ class DataStore(RoomMemberStore, RoomStore,
|
||||||
# TODO (erikj): We also need to update the current state table?
|
# TODO (erikj): We also need to update the current state table?
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def get_current_state(room_id, event_type=None, state_key=""):
|
def get_current_state(self, room_id, event_type=None, state_key=""):
|
||||||
sql = (
|
sql = (
|
||||||
"SELECT e.* FROM events as e"
|
"SELECT e.* FROM events as e "
|
||||||
"INNER JOIN current_state as c ON e.event_id = c.event_id "
|
"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 "
|
"INNER JOIN state_events as s ON e.event_id = s.event_id "
|
||||||
"WHERE c.room_id = ? "
|
"WHERE c.room_id = ? "
|
||||||
)
|
)
|
||||||
|
|
||||||
if event_type:
|
if event_type:
|
||||||
sql += " s.type = ? AND s.state_key = ? "
|
sql += " AND s.type = ? AND s.state_key = ? "
|
||||||
args = (room_id, event_type, state_key)
|
args = (room_id, event_type, state_key)
|
||||||
else:
|
else:
|
||||||
args = (room_id, )
|
args = (room_id, )
|
||||||
|
|
|
@ -19,6 +19,7 @@ from twisted.internet import defer
|
||||||
from synapse.api.errors import StoreError
|
from synapse.api.errors import StoreError
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
import copy
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
@ -59,7 +60,7 @@ class SQLBaseStore(object):
|
||||||
The result of decoder(results)
|
The result of decoder(results)
|
||||||
"""
|
"""
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"[SQL] %s Args=%s Func=%s", query, args, decoder.__name__
|
"[SQL] %s Args=%s Func=%s", query, args, decoder.__name__ if decoder else None
|
||||||
)
|
)
|
||||||
|
|
||||||
def interaction(txn):
|
def interaction(txn):
|
||||||
|
@ -72,7 +73,7 @@ class SQLBaseStore(object):
|
||||||
return self._db_pool.runInteraction(interaction)
|
return self._db_pool.runInteraction(interaction)
|
||||||
|
|
||||||
def _execute_and_decode(self, query, *args):
|
def _execute_and_decode(self, query, *args):
|
||||||
return self._execute(self.cursor_to_dict, *args)
|
return self._execute(self.cursor_to_dict, query, *args)
|
||||||
|
|
||||||
# "Simple" SQL API methods that operate on a single table with no JOINs,
|
# "Simple" SQL API methods that operate on a single table with no JOINs,
|
||||||
# no complex WHERE clauses, just a dict of values for columns.
|
# no complex WHERE clauses, just a dict of values for columns.
|
||||||
|
@ -291,8 +292,8 @@ class SQLBaseStore(object):
|
||||||
return self._db_pool.runInteraction(func)
|
return self._db_pool.runInteraction(func)
|
||||||
|
|
||||||
def _parse_event_from_row(self, row_dict):
|
def _parse_event_from_row(self, row_dict):
|
||||||
d = copy.deepcopy({k: v for k, v in row.items() if v})
|
d = copy.deepcopy({k: v for k, v in row_dict.items() if v})
|
||||||
d.update(json.loads(json.loads(row["unrecognized_keys"])))
|
d.update(json.loads(json.loads(row_dict["unrecognized_keys"])))
|
||||||
d["content"] = json.loads(d["content"])
|
d["content"] = json.loads(d["content"])
|
||||||
del d["unrecognized_keys"]
|
del d["unrecognized_keys"]
|
||||||
|
|
||||||
|
|
|
@ -54,13 +54,13 @@ class RoomMemberStore(SQLBaseStore):
|
||||||
"INSERT OR IGNORE INTO room_hosts (room_id, host) "
|
"INSERT OR IGNORE INTO room_hosts (room_id, host) "
|
||||||
"VALUES (?, ?)"
|
"VALUES (?, ?)"
|
||||||
)
|
)
|
||||||
yield self._execute(None, sql, room_id, domain)
|
yield self._execute(None, sql, event.room_id, domain)
|
||||||
else:
|
else:
|
||||||
sql = (
|
sql = (
|
||||||
"DELETE FROM room_hosts WHERE room_id = ? AND host = ?"
|
"DELETE FROM room_hosts WHERE room_id = ? AND host = ?"
|
||||||
)
|
)
|
||||||
|
|
||||||
yield self._execute(None, sql, room_id, domain)
|
yield self._execute(None, sql, event.room_id, domain)
|
||||||
|
|
||||||
|
|
||||||
def get_room_member(self, user_id, room_id):
|
def get_room_member(self, user_id, room_id):
|
||||||
|
@ -72,10 +72,10 @@ class RoomMemberStore(SQLBaseStore):
|
||||||
Returns:
|
Returns:
|
||||||
Deferred: Results in a MembershipEvent or None.
|
Deferred: Results in a MembershipEvent or None.
|
||||||
"""
|
"""
|
||||||
return self._get_members_by_dict(
|
return self._get_members_by_dict({
|
||||||
room_id=room_id,
|
"e.room_id": room_id,
|
||||||
user_id=user_id
|
"m.user_id": user_id,
|
||||||
)
|
})
|
||||||
|
|
||||||
def get_room_members(self, room_id, membership=None):
|
def get_room_members(self, room_id, membership=None):
|
||||||
"""Retrieve the current room member list for a room.
|
"""Retrieve the current room member list for a room.
|
||||||
|
@ -89,11 +89,11 @@ class RoomMemberStore(SQLBaseStore):
|
||||||
list of namedtuples representing the members in this room.
|
list of namedtuples representing the members in this room.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
where = {"room_id": room_id}
|
where = {"m.room_id": room_id}
|
||||||
if membership:
|
if membership:
|
||||||
where["membership"] = membership
|
where["m.membership"] = membership
|
||||||
|
|
||||||
return self._get_members_by_dict(**membership)
|
return self._get_members_by_dict(where)
|
||||||
|
|
||||||
def get_rooms_for_user_where_membership_is(self, user_id, membership_list):
|
def get_rooms_for_user_where_membership_is(self, user_id, membership_list):
|
||||||
""" Get all the rooms for this user where the membership for this user
|
""" Get all the rooms for this user where the membership for this user
|
||||||
|
@ -126,8 +126,8 @@ class RoomMemberStore(SQLBaseStore):
|
||||||
)
|
)
|
||||||
|
|
||||||
def _get_members_by_dict(self, where_dict):
|
def _get_members_by_dict(self, where_dict):
|
||||||
clause = " AND ".join("%s = ?" % k for k in where.keys())
|
clause = " AND ".join("%s = ?" % k for k in where_dict.keys())
|
||||||
vals = where.values()
|
vals = where_dict.values()
|
||||||
return self._get_members_query(clause, vals)
|
return self._get_members_query(clause, vals)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
|
@ -136,11 +136,11 @@ class RoomMemberStore(SQLBaseStore):
|
||||||
"SELECT e.* FROM events as e "
|
"SELECT e.* FROM events as e "
|
||||||
"INNER JOIN room_memberships as m "
|
"INNER JOIN room_memberships as m "
|
||||||
"ON e.event_id = m.event_id "
|
"ON e.event_id = m.event_id "
|
||||||
"INNER JOIN current_state as c "
|
"INNER JOIN current_state_events as c "
|
||||||
"ON m.event_id = c.event_id "
|
"ON m.event_id = c.event_id "
|
||||||
"WHERE %s "
|
"WHERE %s "
|
||||||
) % (where_clause,)
|
) % (where_clause,)
|
||||||
|
|
||||||
rows = yield self._execute_and_decode(sql, where_values)
|
rows = yield self._execute_and_decode(sql, *where_values)
|
||||||
results = [self._parse_event_from_row(r) for r in rows]
|
results = [self._parse_event_from_row(r) for r in rows]
|
||||||
defer.returnValue(results)
|
defer.returnValue(results)
|
||||||
|
|
|
@ -30,9 +30,9 @@ CREATE TABLE IF NOT EXISTS state_events(
|
||||||
prev_state TEXT
|
prev_state TEXT
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS current_state(
|
CREATE TABLE IF NOT EXISTS current_state_events(
|
||||||
event_id TEXT NOT NULL,
|
event_id TEXT NOT NULL,
|
||||||
room_id TEXT NOT NULL,
|
room_id TEXT NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS room_memberships(
|
CREATE TABLE IF NOT EXISTS room_memberships(
|
||||||
|
|
|
@ -13,12 +13,9 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
from twisted.internet import defer
|
||||||
|
|
||||||
from ._base import SQLBaseStore
|
from ._base import SQLBaseStore
|
||||||
from .message import MessagesTable
|
|
||||||
from .feedback import FeedbackTable
|
|
||||||
from .roomdata import RoomDataTable
|
|
||||||
from .roommember import RoomMemberTable
|
|
||||||
|
|
||||||
from synapse.api.constants import Membership
|
from synapse.api.constants import Membership
|
||||||
|
|
||||||
|
@ -40,13 +37,13 @@ class StreamStore(SQLBaseStore):
|
||||||
|
|
||||||
current_room_membership_sql = (
|
current_room_membership_sql = (
|
||||||
"SELECT m.room_id FROM room_memberships as m "
|
"SELECT m.room_id FROM room_memberships as m "
|
||||||
"INNER JOIN current_state as c ON m.event_id = c.event_id "
|
"INNER JOIN current_state_events as c ON m.event_id = c.event_id "
|
||||||
"WHERE m.user_id = ?"
|
"WHERE m.user_id = ?"
|
||||||
)
|
)
|
||||||
|
|
||||||
invites_sql = (
|
invites_sql = (
|
||||||
"SELECT m.event_id FROM room_membershipas as m "
|
"SELECT m.event_id FROM room_membershipas as m "
|
||||||
"INNER JOIN current_state as c ON m.event_id = c.event_id "
|
"INNER JOIN current_state_events as c ON m.event_id = c.event_id "
|
||||||
"WHERE m.user_id = ? AND m.membership = ?"
|
"WHERE m.user_id = ? AND m.membership = ?"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -71,4 +68,4 @@ class StreamStore(SQLBaseStore):
|
||||||
user_id, user_id, Membership.INVITE
|
user_id, user_id, Membership.INVITE
|
||||||
)
|
)
|
||||||
|
|
||||||
defer.returnValue([self._parse_event_from_row(r) for r in results])
|
defer.returnValue([self._parse_event_from_row(r) for r in rows])
|
||||||
|
|
Loading…
Reference in New Issue