diff options
Diffstat (limited to 'synapse/storage/pusher.py')
-rw-r--r-- | synapse/storage/pusher.py | 62 |
1 files changed, 15 insertions, 47 deletions
diff --git a/synapse/storage/pusher.py b/synapse/storage/pusher.py index 1c657beddb..2582a1da66 100644 --- a/synapse/storage/pusher.py +++ b/synapse/storage/pusher.py @@ -13,13 +13,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -import collections - from ._base import SQLBaseStore, Table from twisted.internet import defer from synapse.api.errors import StoreError +from syutil.jsonutil import encode_canonical_json + import logging logger = logging.getLogger(__name__) @@ -28,50 +28,35 @@ logger = logging.getLogger(__name__) class PusherStore(SQLBaseStore): @defer.inlineCallbacks def get_pushers_by_app_id_and_pushkey(self, app_id, pushkey): - cols = ",".join(PushersTable.fields) sql = ( - "SELECT "+cols+" FROM pushers " + "SELECT * FROM pushers " "WHERE app_id = ? AND pushkey = ?" ) - rows = yield self._execute( - "get_pushers_by_app_id_and_pushkey", None, sql, + rows = yield self._execute_and_decode( + "get_pushers_by_app_id_and_pushkey", + sql, app_id, pushkey ) - ret = [ - { - k: r[i] for i, k in enumerate(PushersTable.fields) - } - for r in rows - ] - print ret - - defer.returnValue(ret) + defer.returnValue(rows) @defer.inlineCallbacks def get_all_pushers(self): - cols = ",".join(PushersTable.fields) sql = ( - "SELECT "+cols+" FROM pushers" + "SELECT * FROM pushers" ) - rows = yield self._execute("get_all_pushers", None, sql) + rows = yield self._execute_and_decode("get_all_pushers", sql) - ret = [ - { - k: r[i] for i, k in enumerate(PushersTable.fields) - } - for r in rows - ] - - defer.returnValue(ret) + defer.returnValue(rows) @defer.inlineCallbacks def add_pusher(self, user_name, access_token, profile_tag, kind, app_id, app_display_name, device_display_name, pushkey, pushkey_ts, lang, data): try: + next_id = yield self._pushers_id_gen.get_next() yield self._simple_upsert( PushersTable.table_name, dict( @@ -87,7 +72,10 @@ class PusherStore(SQLBaseStore): device_display_name=device_display_name, ts=pushkey_ts, lang=lang, - data=data + data=encode_canonical_json(data).decode("UTF-8"), + ), + insertion_values=dict( + id=next_id, ), desc="add_pusher", ) @@ -135,23 +123,3 @@ class PusherStore(SQLBaseStore): class PushersTable(Table): table_name = "pushers" - - fields = [ - "id", - "user_name", - "access_token", - "kind", - "profile_tag", - "app_id", - "app_display_name", - "device_display_name", - "pushkey", - "ts", - "lang", - "data", - "last_token", - "last_success", - "failing_since" - ] - - EntryType = collections.namedtuple("PusherEntry", fields) |