From c9823807beb567b95766bd47f85db894308ef7d4 Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Mon, 25 Nov 2019 11:43:28 +0000 Subject: [PATCH] Add database support for ephemeral messages --- synapse/storage/data_stores/main/events.py | 26 +++++++++++++++++++ .../main/schema/delta/56/event_expiry.sql | 19 ++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 synapse/storage/data_stores/main/schema/delta/56/event_expiry.sql diff --git a/synapse/storage/data_stores/main/events.py b/synapse/storage/data_stores/main/events.py index 878f7568a63d..ab2b9d9d3cde 100644 --- a/synapse/storage/data_stores/main/events.py +++ b/synapse/storage/data_stores/main/events.py @@ -1956,6 +1956,32 @@ def insert_labels_for_event_txn( ], ) + def insert_event_expiry(self, event_id, expiry_ts): + return self._simple_insert( + table="event_expiry", + values={ + "event_id": event_id, + "expiry_ts": expiry_ts, + }, + desc="insert_event_expiry", + ) + + def delete_event_expiry(self, event_id): + return self._simple_delete( + table="event_expiry", + keyvalues={"event_id": event_id}, + desc="delete_event_expiry", + ) + + def get_events_to_expire(self): + return self._simple_select_list( + table="event_expiry", + keyvalues=None, + retcols=["event_id", "expiry_ts"], + desc="get_events_to_expire", + ) + + AllNewEventsResult = namedtuple( "AllNewEventsResult", diff --git a/synapse/storage/data_stores/main/schema/delta/56/event_expiry.sql b/synapse/storage/data_stores/main/schema/delta/56/event_expiry.sql new file mode 100644 index 000000000000..5b2fa7767ca5 --- /dev/null +++ b/synapse/storage/data_stores/main/schema/delta/56/event_expiry.sql @@ -0,0 +1,19 @@ +/* Copyright 2019 The Matrix.org Foundation C.I.C. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +CREATE TABLE IF NOT EXISTS event_expiry ( + event_id TEXT PRIMARY KEY, + expiry_ts BIGINT NOT NULL +); \ No newline at end of file