aboutsummaryrefslogtreecommitdiff
path: root/syncapi/storage/sqlite3/stream_id_table.go
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2021-01-19 18:00:42 +0000
committerGitHub <noreply@github.com>2021-01-19 18:00:42 +0000
commitb70238f2d5579876d834ec393f178161599a2fa7 (patch)
tree7b39deefc186142a9a95142c9fe6331b4fa4a32f /syncapi/storage/sqlite3/stream_id_table.go
parent80aa9aa8b053655683cbdae1aeccb083166bc714 (diff)
Basic sync filtering (#1721)
* Add some filtering (postgres only for now) * Fix build error * Try to use request filter * Use default filter as a template when retrieving from the database * Remove unused strut * Update sytest-whitelist * Add filtering to SelectEarlyEvents * Fix Postgres selectEarlyEvents query * Attempt filtering on SQLite * Test limit, set field for limit/order in prepareWithFilters * Remove debug logging, add comments * Tweaks, debug logging * Separate SQLite stream IDs * Fix filtering in current state table * Fix lock issues * More tweaks * Current state requires room ID * Review comments
Diffstat (limited to 'syncapi/storage/sqlite3/stream_id_table.go')
-rw-r--r--syncapi/storage/sqlite3/stream_id_table.go26
1 files changed, 25 insertions, 1 deletions
diff --git a/syncapi/storage/sqlite3/stream_id_table.go b/syncapi/storage/sqlite3/stream_id_table.go
index f73be422..b614271d 100644
--- a/syncapi/storage/sqlite3/stream_id_table.go
+++ b/syncapi/storage/sqlite3/stream_id_table.go
@@ -20,6 +20,10 @@ INSERT INTO syncapi_stream_id (stream_name, stream_id) VALUES ("global", 0)
ON CONFLICT DO NOTHING;
INSERT INTO syncapi_stream_id (stream_name, stream_id) VALUES ("receipt", 0)
ON CONFLICT DO NOTHING;
+INSERT INTO syncapi_stream_id (stream_name, stream_id) VALUES ("accountdata", 0)
+ ON CONFLICT DO NOTHING;
+INSERT INTO syncapi_stream_id (stream_name, stream_id) VALUES ("invite", 0)
+ ON CONFLICT DO NOTHING;
`
const increaseStreamIDStmt = "" +
@@ -49,7 +53,7 @@ func (s *streamIDStatements) prepare(db *sql.DB) (err error) {
return
}
-func (s *streamIDStatements) nextStreamID(ctx context.Context, txn *sql.Tx) (pos types.StreamPosition, err error) {
+func (s *streamIDStatements) nextPDUID(ctx context.Context, txn *sql.Tx) (pos types.StreamPosition, err error) {
increaseStmt := sqlutil.TxStmt(txn, s.increaseStreamIDStmt)
selectStmt := sqlutil.TxStmt(txn, s.selectStreamIDStmt)
if _, err = increaseStmt.ExecContext(ctx, "global"); err != nil {
@@ -68,3 +72,23 @@ func (s *streamIDStatements) nextReceiptID(ctx context.Context, txn *sql.Tx) (po
err = selectStmt.QueryRowContext(ctx, "receipt").Scan(&pos)
return
}
+
+func (s *streamIDStatements) nextInviteID(ctx context.Context, txn *sql.Tx) (pos types.StreamPosition, err error) {
+ increaseStmt := sqlutil.TxStmt(txn, s.increaseStreamIDStmt)
+ selectStmt := sqlutil.TxStmt(txn, s.selectStreamIDStmt)
+ if _, err = increaseStmt.ExecContext(ctx, "invite"); err != nil {
+ return
+ }
+ err = selectStmt.QueryRowContext(ctx, "invite").Scan(&pos)
+ return
+}
+
+func (s *streamIDStatements) nextAccountDataID(ctx context.Context, txn *sql.Tx) (pos types.StreamPosition, err error) {
+ increaseStmt := sqlutil.TxStmt(txn, s.increaseStreamIDStmt)
+ selectStmt := sqlutil.TxStmt(txn, s.selectStreamIDStmt)
+ if _, err = increaseStmt.ExecContext(ctx, "accountdata"); err != nil {
+ return
+ }
+ err = selectStmt.QueryRowContext(ctx, "accountdata").Scan(&pos)
+ return
+}