aboutsummaryrefslogtreecommitdiff
path: root/syncapi/storage/postgres/invites_table.go
diff options
context:
space:
mode:
Diffstat (limited to 'syncapi/storage/postgres/invites_table.go')
-rw-r--r--syncapi/storage/postgres/invites_table.go31
1 files changed, 18 insertions, 13 deletions
diff --git a/syncapi/storage/postgres/invites_table.go b/syncapi/storage/postgres/invites_table.go
index aada70d5..151bffa5 100644
--- a/syncapi/storage/postgres/invites_table.go
+++ b/syncapi/storage/postgres/invites_table.go
@@ -62,11 +62,15 @@ const selectInviteEventsInRangeSQL = "" +
const selectMaxInviteIDSQL = "" +
"SELECT MAX(id) FROM syncapi_invite_events"
+const purgeInvitesSQL = "" +
+ "DELETE FROM syncapi_invite_events WHERE room_id = $1"
+
type inviteEventsStatements struct {
insertInviteEventStmt *sql.Stmt
selectInviteEventsInRangeStmt *sql.Stmt
deleteInviteEventStmt *sql.Stmt
selectMaxInviteIDStmt *sql.Stmt
+ purgeInvitesStmt *sql.Stmt
}
func NewPostgresInvitesTable(db *sql.DB) (tables.Invites, error) {
@@ -75,19 +79,13 @@ func NewPostgresInvitesTable(db *sql.DB) (tables.Invites, error) {
if err != nil {
return nil, err
}
- if s.insertInviteEventStmt, err = db.Prepare(insertInviteEventSQL); err != nil {
- return nil, err
- }
- if s.selectInviteEventsInRangeStmt, err = db.Prepare(selectInviteEventsInRangeSQL); err != nil {
- return nil, err
- }
- if s.deleteInviteEventStmt, err = db.Prepare(deleteInviteEventSQL); err != nil {
- return nil, err
- }
- if s.selectMaxInviteIDStmt, err = db.Prepare(selectMaxInviteIDSQL); err != nil {
- return nil, err
- }
- return s, nil
+ return s, sqlutil.StatementList{
+ {&s.insertInviteEventStmt, insertInviteEventSQL},
+ {&s.selectInviteEventsInRangeStmt, selectInviteEventsInRangeSQL},
+ {&s.deleteInviteEventStmt, deleteInviteEventSQL},
+ {&s.selectMaxInviteIDStmt, selectMaxInviteIDSQL},
+ {&s.purgeInvitesStmt, purgeInvitesSQL},
+ }.Prepare(db)
}
func (s *inviteEventsStatements) InsertInviteEvent(
@@ -181,3 +179,10 @@ func (s *inviteEventsStatements) SelectMaxInviteID(
}
return
}
+
+func (s *inviteEventsStatements) PurgeInvites(
+ ctx context.Context, txn *sql.Tx, roomID string,
+) error {
+ _, err := sqlutil.TxStmt(txn, s.purgeInvitesStmt).ExecContext(ctx, roomID)
+ return err
+}