mirror of
https://github.com/matrix-org/dendrite.git
synced 2024-11-23 14:51:56 -06:00
Consolidate purge statements as they need to be prepared after other tables are created
This commit is contained in:
parent
468d4b5bbe
commit
4e4fc400a2
|
@ -54,16 +54,9 @@ const bulkSelectEventJSONSQL = "" +
|
||||||
" WHERE event_nid = ANY($1)" +
|
" WHERE event_nid = ANY($1)" +
|
||||||
" ORDER BY event_nid ASC"
|
" ORDER BY event_nid ASC"
|
||||||
|
|
||||||
const purgeEventJSONSQL = `
|
|
||||||
DELETE FROM roomserver_event_json WHERE event_nid = ANY(
|
|
||||||
SELECT event_nid FROM roomserver_events WHERE room_nid = $1
|
|
||||||
)
|
|
||||||
`
|
|
||||||
|
|
||||||
type eventJSONStatements struct {
|
type eventJSONStatements struct {
|
||||||
insertEventJSONStmt *sql.Stmt
|
insertEventJSONStmt *sql.Stmt
|
||||||
bulkSelectEventJSONStmt *sql.Stmt
|
bulkSelectEventJSONStmt *sql.Stmt
|
||||||
purgeEventJSONStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateEventJSONTable(db *sql.DB) error {
|
func CreateEventJSONTable(db *sql.DB) error {
|
||||||
|
@ -77,7 +70,6 @@ func PrepareEventJSONTable(db *sql.DB) (tables.EventJSON, error) {
|
||||||
return s, sqlutil.StatementList{
|
return s, sqlutil.StatementList{
|
||||||
{&s.insertEventJSONStmt, insertEventJSONSQL},
|
{&s.insertEventJSONStmt, insertEventJSONSQL},
|
||||||
{&s.bulkSelectEventJSONStmt, bulkSelectEventJSONSQL},
|
{&s.bulkSelectEventJSONStmt, bulkSelectEventJSONSQL},
|
||||||
{&s.purgeEventJSONStmt, purgeEventJSONSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,10 +107,3 @@ func (s *eventJSONStatements) BulkSelectEventJSON(
|
||||||
}
|
}
|
||||||
return results[:i], rows.Err()
|
return results[:i], rows.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *eventJSONStatements) PurgeEventJSONs(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeEventJSONStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
@ -147,9 +147,6 @@ const selectRoomNIDsForEventNIDsSQL = "" +
|
||||||
const selectEventRejectedSQL = "" +
|
const selectEventRejectedSQL = "" +
|
||||||
"SELECT is_rejected FROM roomserver_events WHERE room_nid = $1 AND event_id = $2"
|
"SELECT is_rejected FROM roomserver_events WHERE room_nid = $1 AND event_id = $2"
|
||||||
|
|
||||||
const purgeEventsSQL = "" +
|
|
||||||
"DELETE FROM roomserver_events WHERE room_nid = $1"
|
|
||||||
|
|
||||||
type eventStatements struct {
|
type eventStatements struct {
|
||||||
insertEventStmt *sql.Stmt
|
insertEventStmt *sql.Stmt
|
||||||
selectEventStmt *sql.Stmt
|
selectEventStmt *sql.Stmt
|
||||||
|
@ -169,7 +166,6 @@ type eventStatements struct {
|
||||||
selectMaxEventDepthStmt *sql.Stmt
|
selectMaxEventDepthStmt *sql.Stmt
|
||||||
selectRoomNIDsForEventNIDsStmt *sql.Stmt
|
selectRoomNIDsForEventNIDsStmt *sql.Stmt
|
||||||
selectEventRejectedStmt *sql.Stmt
|
selectEventRejectedStmt *sql.Stmt
|
||||||
purgeEventsStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateEventsTable(db *sql.DB) error {
|
func CreateEventsTable(db *sql.DB) error {
|
||||||
|
@ -199,7 +195,6 @@ func PrepareEventsTable(db *sql.DB) (tables.Events, error) {
|
||||||
{&s.selectMaxEventDepthStmt, selectMaxEventDepthSQL},
|
{&s.selectMaxEventDepthStmt, selectMaxEventDepthSQL},
|
||||||
{&s.selectRoomNIDsForEventNIDsStmt, selectRoomNIDsForEventNIDsSQL},
|
{&s.selectRoomNIDsForEventNIDsStmt, selectRoomNIDsForEventNIDsSQL},
|
||||||
{&s.selectEventRejectedStmt, selectEventRejectedSQL},
|
{&s.selectEventRejectedStmt, selectEventRejectedSQL},
|
||||||
{&s.purgeEventsStmt, purgeEventsSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -576,10 +571,3 @@ func (s *eventStatements) SelectEventRejected(
|
||||||
err = stmt.QueryRowContext(ctx, roomNID, eventID).Scan(&rejected)
|
err = stmt.QueryRowContext(ctx, roomNID, eventID).Scan(&rejected)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *eventStatements) PurgeEvents(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeEventsStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
@ -75,14 +75,10 @@ const updateInviteRetiredSQL = "" +
|
||||||
" WHERE room_nid = $1 AND target_nid = $2 AND NOT retired" +
|
" WHERE room_nid = $1 AND target_nid = $2 AND NOT retired" +
|
||||||
" RETURNING invite_event_id"
|
" RETURNING invite_event_id"
|
||||||
|
|
||||||
const purgeInvitesSQL = "" +
|
|
||||||
"DELETE FROM roomserver_invites WHERE room_nid = $1"
|
|
||||||
|
|
||||||
type inviteStatements struct {
|
type inviteStatements struct {
|
||||||
insertInviteEventStmt *sql.Stmt
|
insertInviteEventStmt *sql.Stmt
|
||||||
selectInviteActiveForUserInRoomStmt *sql.Stmt
|
selectInviteActiveForUserInRoomStmt *sql.Stmt
|
||||||
updateInviteRetiredStmt *sql.Stmt
|
updateInviteRetiredStmt *sql.Stmt
|
||||||
purgeInvitesStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateInvitesTable(db *sql.DB) error {
|
func CreateInvitesTable(db *sql.DB) error {
|
||||||
|
@ -97,7 +93,6 @@ func PrepareInvitesTable(db *sql.DB) (tables.Invites, error) {
|
||||||
{&s.insertInviteEventStmt, insertInviteEventSQL},
|
{&s.insertInviteEventStmt, insertInviteEventSQL},
|
||||||
{&s.selectInviteActiveForUserInRoomStmt, selectInviteActiveForUserInRoomSQL},
|
{&s.selectInviteActiveForUserInRoomStmt, selectInviteActiveForUserInRoomSQL},
|
||||||
{&s.updateInviteRetiredStmt, updateInviteRetiredSQL},
|
{&s.updateInviteRetiredStmt, updateInviteRetiredSQL},
|
||||||
{&s.purgeInvitesStmt, purgeInvitesSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,10 +163,3 @@ func (s *inviteStatements) SelectInviteActiveForUserInRoom(
|
||||||
}
|
}
|
||||||
return result, eventIDs, rows.Err()
|
return result, eventIDs, rows.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *inviteStatements) PurgeInvites(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeInvitesStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
@ -153,9 +153,6 @@ const selectServerInRoomSQL = "" +
|
||||||
" JOIN roomserver_event_state_keys ON roomserver_membership.target_nid = roomserver_event_state_keys.event_state_key_nid" +
|
" JOIN roomserver_event_state_keys ON roomserver_membership.target_nid = roomserver_event_state_keys.event_state_key_nid" +
|
||||||
" WHERE membership_nid = $1 AND room_nid = $2 AND event_state_key LIKE '%:' || $3 LIMIT 1"
|
" WHERE membership_nid = $1 AND room_nid = $2 AND event_state_key LIKE '%:' || $3 LIMIT 1"
|
||||||
|
|
||||||
const purgeMembershipsSQL = "" +
|
|
||||||
"DELETE FROM roomserver_membership WHERE room_nid = $1"
|
|
||||||
|
|
||||||
type membershipStatements struct {
|
type membershipStatements struct {
|
||||||
insertMembershipStmt *sql.Stmt
|
insertMembershipStmt *sql.Stmt
|
||||||
selectMembershipForUpdateStmt *sql.Stmt
|
selectMembershipForUpdateStmt *sql.Stmt
|
||||||
|
@ -173,7 +170,6 @@ type membershipStatements struct {
|
||||||
selectLocalServerInRoomStmt *sql.Stmt
|
selectLocalServerInRoomStmt *sql.Stmt
|
||||||
selectServerInRoomStmt *sql.Stmt
|
selectServerInRoomStmt *sql.Stmt
|
||||||
deleteMembershipStmt *sql.Stmt
|
deleteMembershipStmt *sql.Stmt
|
||||||
purgeMembershipsStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateMembershipTable(db *sql.DB) error {
|
func CreateMembershipTable(db *sql.DB) error {
|
||||||
|
@ -209,7 +205,6 @@ func PrepareMembershipTable(db *sql.DB) (tables.Membership, error) {
|
||||||
{&s.selectLocalServerInRoomStmt, selectLocalServerInRoomSQL},
|
{&s.selectLocalServerInRoomStmt, selectLocalServerInRoomSQL},
|
||||||
{&s.selectServerInRoomStmt, selectServerInRoomSQL},
|
{&s.selectServerInRoomStmt, selectServerInRoomSQL},
|
||||||
{&s.deleteMembershipStmt, deleteMembershipSQL},
|
{&s.deleteMembershipStmt, deleteMembershipSQL},
|
||||||
{&s.purgeMembershipsStmt, purgeMembershipsSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -441,10 +436,3 @@ func (s *membershipStatements) DeleteMembership(
|
||||||
)
|
)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *membershipStatements) PurgeMemberships(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeMembershipsStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
@ -59,16 +59,9 @@ const selectPreviousEventExistsSQL = "" +
|
||||||
"SELECT 1 FROM roomserver_previous_events" +
|
"SELECT 1 FROM roomserver_previous_events" +
|
||||||
" WHERE previous_event_id = $1 AND previous_reference_sha256 = $2"
|
" WHERE previous_event_id = $1 AND previous_reference_sha256 = $2"
|
||||||
|
|
||||||
const purgePreviousEventsSQL = `
|
|
||||||
DELETE FROM roomserver_previous_events WHERE event_nids && ANY(
|
|
||||||
SELECT ARRAY_AGG(event_nid) FROM roomserver_events WHERE room_nid = $1
|
|
||||||
)
|
|
||||||
`
|
|
||||||
|
|
||||||
type previousEventStatements struct {
|
type previousEventStatements struct {
|
||||||
insertPreviousEventStmt *sql.Stmt
|
insertPreviousEventStmt *sql.Stmt
|
||||||
selectPreviousEventExistsStmt *sql.Stmt
|
selectPreviousEventExistsStmt *sql.Stmt
|
||||||
purgePreviousEventsStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreatePrevEventsTable(db *sql.DB) error {
|
func CreatePrevEventsTable(db *sql.DB) error {
|
||||||
|
@ -82,7 +75,6 @@ func PreparePrevEventsTable(db *sql.DB) (tables.PreviousEvents, error) {
|
||||||
return s, sqlutil.StatementList{
|
return s, sqlutil.StatementList{
|
||||||
{&s.insertPreviousEventStmt, insertPreviousEventSQL},
|
{&s.insertPreviousEventStmt, insertPreviousEventSQL},
|
||||||
{&s.selectPreviousEventExistsStmt, selectPreviousEventExistsSQL},
|
{&s.selectPreviousEventExistsStmt, selectPreviousEventExistsSQL},
|
||||||
{&s.purgePreviousEventsStmt, purgePreviousEventsSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,10 +101,3 @@ func (s *previousEventStatements) SelectPreviousEventExists(
|
||||||
stmt := sqlutil.TxStmt(txn, s.selectPreviousEventExistsStmt)
|
stmt := sqlutil.TxStmt(txn, s.selectPreviousEventExistsStmt)
|
||||||
return stmt.QueryRowContext(ctx, eventID, eventReferenceSHA256).Scan(&ok)
|
return stmt.QueryRowContext(ctx, eventID, eventReferenceSHA256).Scan(&ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *previousEventStatements) PurgePreviousEvents(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgePreviousEventsStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
@ -43,14 +43,10 @@ const selectAllPublishedSQL = "" +
|
||||||
const selectPublishedSQL = "" +
|
const selectPublishedSQL = "" +
|
||||||
"SELECT published FROM roomserver_published WHERE room_id = $1"
|
"SELECT published FROM roomserver_published WHERE room_id = $1"
|
||||||
|
|
||||||
const purgePublishedSQL = "" +
|
|
||||||
"DELETE FROM roomserver_published WHERE room_id = $1"
|
|
||||||
|
|
||||||
type publishedStatements struct {
|
type publishedStatements struct {
|
||||||
upsertPublishedStmt *sql.Stmt
|
upsertPublishedStmt *sql.Stmt
|
||||||
selectAllPublishedStmt *sql.Stmt
|
selectAllPublishedStmt *sql.Stmt
|
||||||
selectPublishedStmt *sql.Stmt
|
selectPublishedStmt *sql.Stmt
|
||||||
purgePublishedStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreatePublishedTable(db *sql.DB) error {
|
func CreatePublishedTable(db *sql.DB) error {
|
||||||
|
@ -65,7 +61,6 @@ func PreparePublishedTable(db *sql.DB) (tables.Published, error) {
|
||||||
{&s.upsertPublishedStmt, upsertPublishedSQL},
|
{&s.upsertPublishedStmt, upsertPublishedSQL},
|
||||||
{&s.selectAllPublishedStmt, selectAllPublishedSQL},
|
{&s.selectAllPublishedStmt, selectAllPublishedSQL},
|
||||||
{&s.selectPublishedStmt, selectPublishedSQL},
|
{&s.selectPublishedStmt, selectPublishedSQL},
|
||||||
{&s.purgePublishedStmt, purgePublishedSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,10 +104,3 @@ func (s *publishedStatements) SelectAllPublishedRooms(
|
||||||
}
|
}
|
||||||
return roomIDs, rows.Err()
|
return roomIDs, rows.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *publishedStatements) PurgePublished(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomID string,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgePublishedStmt).ExecContext(ctx, roomID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
159
roomserver/storage/postgres/purge_statements.go
Normal file
159
roomserver/storage/postgres/purge_statements.go
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
package postgres
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"database/sql"
|
||||||
|
|
||||||
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||||
|
"github.com/matrix-org/dendrite/roomserver/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
const purgeEventJSONSQL = "" +
|
||||||
|
"DELETE FROM roomserver_event_json WHERE event_nid = ANY(" +
|
||||||
|
" SELECT event_nid FROM roomserver_events WHERE room_nid = $1" +
|
||||||
|
")"
|
||||||
|
|
||||||
|
const purgeEventsSQL = "" +
|
||||||
|
"DELETE FROM roomserver_events WHERE room_nid = $1"
|
||||||
|
|
||||||
|
const purgeInvitesSQL = "" +
|
||||||
|
"DELETE FROM roomserver_invites WHERE room_nid = $1"
|
||||||
|
|
||||||
|
const purgeMembershipsSQL = "" +
|
||||||
|
"DELETE FROM roomserver_membership WHERE room_nid = $1"
|
||||||
|
|
||||||
|
const purgePreviousEventsSQL = "" +
|
||||||
|
"DELETE FROM roomserver_previous_events WHERE event_nids && ANY(" +
|
||||||
|
" SELECT ARRAY_AGG(event_nid) FROM roomserver_events WHERE room_nid = $1" +
|
||||||
|
")"
|
||||||
|
|
||||||
|
const purgePublishedSQL = "" +
|
||||||
|
"DELETE FROM roomserver_published WHERE room_id = $1"
|
||||||
|
|
||||||
|
const purgeRedactionsSQL = "" +
|
||||||
|
"DELETE FROM roomserver_redactions WHERE redaction_event_id = ANY(" +
|
||||||
|
" SELECT event_id FROM roomserver_events WHERE room_nid = $1" +
|
||||||
|
")"
|
||||||
|
|
||||||
|
const purgeRoomAliasesSQL = "" +
|
||||||
|
"DELETE FROM roomserver_room_aliases WHERE room_id = $1"
|
||||||
|
|
||||||
|
const purgeRoomSQL = "" +
|
||||||
|
"DELETE FROM roomserver_rooms WHERE room_nid = $1"
|
||||||
|
|
||||||
|
const purgeStateBlockEntriesSQL = "" +
|
||||||
|
"DELETE FROM roomserver_state_block WHERE state_block_nid = ANY(" +
|
||||||
|
" SELECT DISTINCT UNNEST(state_block_nids) FROM roomserver_state_snapshots WHERE room_nid = $1" +
|
||||||
|
")"
|
||||||
|
|
||||||
|
const purgeStateSnapshotEntriesSQL = "" +
|
||||||
|
"DELETE FROM roomserver_state_snapshots WHERE room_nid = $1"
|
||||||
|
|
||||||
|
type purgeStatements struct {
|
||||||
|
purgeEventJSONStmt *sql.Stmt
|
||||||
|
purgeEventsStmt *sql.Stmt
|
||||||
|
purgeInvitesStmt *sql.Stmt
|
||||||
|
purgeMembershipsStmt *sql.Stmt
|
||||||
|
purgePreviousEventsStmt *sql.Stmt
|
||||||
|
purgePublishedStmt *sql.Stmt
|
||||||
|
purgeRedactionStmt *sql.Stmt
|
||||||
|
purgeRoomAliasesStmt *sql.Stmt
|
||||||
|
purgeRoomStmt *sql.Stmt
|
||||||
|
purgeStateBlockEntriesStmt *sql.Stmt
|
||||||
|
purgeStateSnapshotEntriesStmt *sql.Stmt
|
||||||
|
}
|
||||||
|
|
||||||
|
func PreparePurgeStatements(db *sql.DB) (*purgeStatements, error) {
|
||||||
|
s := &purgeStatements{}
|
||||||
|
|
||||||
|
return s, sqlutil.StatementList{
|
||||||
|
{&s.purgeEventJSONStmt, purgeEventJSONSQL},
|
||||||
|
{&s.purgeEventsStmt, purgeEventsSQL},
|
||||||
|
{&s.purgeInvitesStmt, purgeInvitesSQL},
|
||||||
|
{&s.purgeMembershipsStmt, purgeMembershipsSQL},
|
||||||
|
{&s.purgePublishedStmt, purgePublishedSQL},
|
||||||
|
{&s.purgePreviousEventsStmt, purgePreviousEventsSQL},
|
||||||
|
{&s.purgeRedactionStmt, purgeRedactionsSQL},
|
||||||
|
{&s.purgeRoomAliasesStmt, purgeRoomAliasesSQL},
|
||||||
|
{&s.purgeRoomStmt, purgeRoomSQL},
|
||||||
|
{&s.purgeStateBlockEntriesStmt, purgeStateBlockEntriesSQL},
|
||||||
|
{&s.purgeStateSnapshotEntriesStmt, purgeStateSnapshotEntriesSQL},
|
||||||
|
}.Prepare(db)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeEventJSONs(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeEventJSONStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeEvents(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeEventsStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeInvites(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeInvitesStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeMemberships(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeMembershipsStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgePreviousEvents(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgePreviousEventsStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgePublished(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomID string,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgePublishedStmt).ExecContext(ctx, roomID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeRedactions(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeRedactionStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeRoomAliases(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomID string,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeRoomAliasesStmt).ExecContext(ctx, roomID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeRoom(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeRoomStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeStateBlocks(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeStateBlockEntriesStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *purgeStatements) PurgeStateSnapshots(
|
||||||
|
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
||||||
|
) error {
|
||||||
|
_, err := sqlutil.TxStmt(txn, s.purgeStateSnapshotEntriesStmt).ExecContext(ctx, roomNID)
|
||||||
|
return err
|
||||||
|
}
|
|
@ -20,7 +20,6 @@ import (
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||||
"github.com/matrix-org/dendrite/roomserver/storage/tables"
|
"github.com/matrix-org/dendrite/roomserver/storage/tables"
|
||||||
"github.com/matrix-org/dendrite/roomserver/types"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const redactionsSchema = `
|
const redactionsSchema = `
|
||||||
|
@ -53,18 +52,11 @@ const selectRedactionInfoByEventBeingRedactedSQL = "" +
|
||||||
const markRedactionValidatedSQL = "" +
|
const markRedactionValidatedSQL = "" +
|
||||||
" UPDATE roomserver_redactions SET validated = $2 WHERE redaction_event_id = $1"
|
" UPDATE roomserver_redactions SET validated = $2 WHERE redaction_event_id = $1"
|
||||||
|
|
||||||
const purgeRedactionsSQL = `
|
|
||||||
DELETE FROM roomserver_redactions WHERE redaction_event_id = ANY(
|
|
||||||
SELECT event_id FROM roomserver_events WHERE room_nid = $1
|
|
||||||
)
|
|
||||||
`
|
|
||||||
|
|
||||||
type redactionStatements struct {
|
type redactionStatements struct {
|
||||||
insertRedactionStmt *sql.Stmt
|
insertRedactionStmt *sql.Stmt
|
||||||
selectRedactionInfoByRedactionEventIDStmt *sql.Stmt
|
selectRedactionInfoByRedactionEventIDStmt *sql.Stmt
|
||||||
selectRedactionInfoByEventBeingRedactedStmt *sql.Stmt
|
selectRedactionInfoByEventBeingRedactedStmt *sql.Stmt
|
||||||
markRedactionValidatedStmt *sql.Stmt
|
markRedactionValidatedStmt *sql.Stmt
|
||||||
purgeRedactionStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateRedactionsTable(db *sql.DB) error {
|
func CreateRedactionsTable(db *sql.DB) error {
|
||||||
|
@ -80,7 +72,6 @@ func PrepareRedactionsTable(db *sql.DB) (tables.Redactions, error) {
|
||||||
{&s.selectRedactionInfoByRedactionEventIDStmt, selectRedactionInfoByRedactionEventIDSQL},
|
{&s.selectRedactionInfoByRedactionEventIDStmt, selectRedactionInfoByRedactionEventIDSQL},
|
||||||
{&s.selectRedactionInfoByEventBeingRedactedStmt, selectRedactionInfoByEventBeingRedactedSQL},
|
{&s.selectRedactionInfoByEventBeingRedactedStmt, selectRedactionInfoByEventBeingRedactedSQL},
|
||||||
{&s.markRedactionValidatedStmt, markRedactionValidatedSQL},
|
{&s.markRedactionValidatedStmt, markRedactionValidatedSQL},
|
||||||
{&s.purgeRedactionStmt, purgeRedactionsSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,10 +120,3 @@ func (s *redactionStatements) MarkRedactionValidated(
|
||||||
_, err := stmt.ExecContext(ctx, redactionEventID, validated)
|
_, err := stmt.ExecContext(ctx, redactionEventID, validated)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *redactionStatements) PurgeRedactions(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeRedactionStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
@ -53,16 +53,12 @@ const selectCreatorIDFromAliasSQL = "" +
|
||||||
const deleteRoomAliasSQL = "" +
|
const deleteRoomAliasSQL = "" +
|
||||||
"DELETE FROM roomserver_room_aliases WHERE alias = $1"
|
"DELETE FROM roomserver_room_aliases WHERE alias = $1"
|
||||||
|
|
||||||
const purgeRoomAliasesSQL = "" +
|
|
||||||
"DELETE FROM roomserver_room_aliases WHERE room_id = $1"
|
|
||||||
|
|
||||||
type roomAliasesStatements struct {
|
type roomAliasesStatements struct {
|
||||||
insertRoomAliasStmt *sql.Stmt
|
insertRoomAliasStmt *sql.Stmt
|
||||||
selectRoomIDFromAliasStmt *sql.Stmt
|
selectRoomIDFromAliasStmt *sql.Stmt
|
||||||
selectAliasesFromRoomIDStmt *sql.Stmt
|
selectAliasesFromRoomIDStmt *sql.Stmt
|
||||||
selectCreatorIDFromAliasStmt *sql.Stmt
|
selectCreatorIDFromAliasStmt *sql.Stmt
|
||||||
deleteRoomAliasStmt *sql.Stmt
|
deleteRoomAliasStmt *sql.Stmt
|
||||||
purgeRoomAliasesStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateRoomAliasesTable(db *sql.DB) error {
|
func CreateRoomAliasesTable(db *sql.DB) error {
|
||||||
|
@ -79,7 +75,6 @@ func PrepareRoomAliasesTable(db *sql.DB) (tables.RoomAliases, error) {
|
||||||
{&s.selectAliasesFromRoomIDStmt, selectAliasesFromRoomIDSQL},
|
{&s.selectAliasesFromRoomIDStmt, selectAliasesFromRoomIDSQL},
|
||||||
{&s.selectCreatorIDFromAliasStmt, selectCreatorIDFromAliasSQL},
|
{&s.selectCreatorIDFromAliasStmt, selectCreatorIDFromAliasSQL},
|
||||||
{&s.deleteRoomAliasStmt, deleteRoomAliasSQL},
|
{&s.deleteRoomAliasStmt, deleteRoomAliasSQL},
|
||||||
{&s.purgeRoomAliasesStmt, purgeRoomAliasesSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,10 +137,3 @@ func (s *roomAliasesStatements) DeleteRoomAlias(
|
||||||
_, err = stmt.ExecContext(ctx, alias)
|
_, err = stmt.ExecContext(ctx, alias)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *roomAliasesStatements) PurgeRoomAliases(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomID string,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeRoomAliasesStmt).ExecContext(ctx, roomID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
@ -82,9 +82,6 @@ const bulkSelectRoomIDsSQL = "" +
|
||||||
const bulkSelectRoomNIDsSQL = "" +
|
const bulkSelectRoomNIDsSQL = "" +
|
||||||
"SELECT room_nid FROM roomserver_rooms WHERE room_id = ANY($1)"
|
"SELECT room_nid FROM roomserver_rooms WHERE room_id = ANY($1)"
|
||||||
|
|
||||||
const purgeRoomSQL = "" +
|
|
||||||
"DELETE FROM roomserver_rooms WHERE room_nid = $1"
|
|
||||||
|
|
||||||
type roomStatements struct {
|
type roomStatements struct {
|
||||||
insertRoomNIDStmt *sql.Stmt
|
insertRoomNIDStmt *sql.Stmt
|
||||||
selectRoomNIDStmt *sql.Stmt
|
selectRoomNIDStmt *sql.Stmt
|
||||||
|
@ -96,7 +93,6 @@ type roomStatements struct {
|
||||||
selectRoomIDsStmt *sql.Stmt
|
selectRoomIDsStmt *sql.Stmt
|
||||||
bulkSelectRoomIDsStmt *sql.Stmt
|
bulkSelectRoomIDsStmt *sql.Stmt
|
||||||
bulkSelectRoomNIDsStmt *sql.Stmt
|
bulkSelectRoomNIDsStmt *sql.Stmt
|
||||||
purgeRoomStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateRoomsTable(db *sql.DB) error {
|
func CreateRoomsTable(db *sql.DB) error {
|
||||||
|
@ -118,7 +114,6 @@ func PrepareRoomsTable(db *sql.DB) (tables.Rooms, error) {
|
||||||
{&s.selectRoomIDsStmt, selectRoomIDsSQL},
|
{&s.selectRoomIDsStmt, selectRoomIDsSQL},
|
||||||
{&s.bulkSelectRoomIDsStmt, bulkSelectRoomIDsSQL},
|
{&s.bulkSelectRoomIDsStmt, bulkSelectRoomIDsSQL},
|
||||||
{&s.bulkSelectRoomNIDsStmt, bulkSelectRoomNIDsSQL},
|
{&s.bulkSelectRoomNIDsStmt, bulkSelectRoomNIDsSQL},
|
||||||
{&s.purgeRoomStmt, purgeRoomSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,13 +288,6 @@ func (s *roomStatements) BulkSelectRoomNIDs(ctx context.Context, txn *sql.Tx, ro
|
||||||
return roomNIDs, nil
|
return roomNIDs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *roomStatements) PurgeRoom(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeRoomStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func roomNIDsAsArray(roomNIDs []types.RoomNID) pq.Int64Array {
|
func roomNIDsAsArray(roomNIDs []types.RoomNID) pq.Int64Array {
|
||||||
nids := make([]int64, len(roomNIDs))
|
nids := make([]int64, len(roomNIDs))
|
||||||
for i := range roomNIDs {
|
for i := range roomNIDs {
|
||||||
|
|
|
@ -65,16 +65,9 @@ const bulkSelectStateBlockEntriesSQL = "" +
|
||||||
"SELECT state_block_nid, event_nids" +
|
"SELECT state_block_nid, event_nids" +
|
||||||
" FROM roomserver_state_block WHERE state_block_nid = ANY($1) ORDER BY state_block_nid ASC"
|
" FROM roomserver_state_block WHERE state_block_nid = ANY($1) ORDER BY state_block_nid ASC"
|
||||||
|
|
||||||
const purgeStateBlockEntriesSQL = `
|
|
||||||
DELETE FROM roomserver_state_block WHERE state_block_nid = ANY(
|
|
||||||
SELECT DISTINCT UNNEST(state_block_nids) FROM roomserver_state_snapshots WHERE room_nid = $1
|
|
||||||
)
|
|
||||||
`
|
|
||||||
|
|
||||||
type stateBlockStatements struct {
|
type stateBlockStatements struct {
|
||||||
insertStateDataStmt *sql.Stmt
|
insertStateDataStmt *sql.Stmt
|
||||||
bulkSelectStateBlockEntriesStmt *sql.Stmt
|
bulkSelectStateBlockEntriesStmt *sql.Stmt
|
||||||
purgeStateBlockEntriesStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateStateBlockTable(db *sql.DB) error {
|
func CreateStateBlockTable(db *sql.DB) error {
|
||||||
|
@ -88,7 +81,6 @@ func PrepareStateBlockTable(db *sql.DB) (tables.StateBlock, error) {
|
||||||
return s, sqlutil.StatementList{
|
return s, sqlutil.StatementList{
|
||||||
{&s.insertStateDataStmt, insertStateDataSQL},
|
{&s.insertStateDataStmt, insertStateDataSQL},
|
||||||
{&s.bulkSelectStateBlockEntriesStmt, bulkSelectStateBlockEntriesSQL},
|
{&s.bulkSelectStateBlockEntriesStmt, bulkSelectStateBlockEntriesSQL},
|
||||||
{&s.purgeStateBlockEntriesStmt, purgeStateBlockEntriesSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,13 +133,6 @@ func (s *stateBlockStatements) BulkSelectStateBlockEntries(
|
||||||
return results, err
|
return results, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *stateBlockStatements) PurgeStateBlocks(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeStateBlockEntriesStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func stateBlockNIDsAsArray(stateBlockNIDs []types.StateBlockNID) pq.Int64Array {
|
func stateBlockNIDsAsArray(stateBlockNIDs []types.StateBlockNID) pq.Int64Array {
|
||||||
nids := make([]int64, len(stateBlockNIDs))
|
nids := make([]int64, len(stateBlockNIDs))
|
||||||
for i := range stateBlockNIDs {
|
for i := range stateBlockNIDs {
|
||||||
|
|
|
@ -72,11 +72,6 @@ const bulkSelectStateBlockNIDsSQL = "" +
|
||||||
"SELECT state_snapshot_nid, state_block_nids FROM roomserver_state_snapshots" +
|
"SELECT state_snapshot_nid, state_block_nids FROM roomserver_state_snapshots" +
|
||||||
" WHERE state_snapshot_nid = ANY($1) ORDER BY state_snapshot_nid ASC"
|
" WHERE state_snapshot_nid = ANY($1) ORDER BY state_snapshot_nid ASC"
|
||||||
|
|
||||||
// Look up state snapshot NIDs for the given room.
|
|
||||||
const purgeStateSnapshotEntriesSQL = `
|
|
||||||
DELETE FROM roomserver_state_snapshots WHERE room_nid = $1
|
|
||||||
`
|
|
||||||
|
|
||||||
// Looks up both the history visibility event and relevant membership events from
|
// Looks up both the history visibility event and relevant membership events from
|
||||||
// a given domain name from a given state snapshot. This is used to optimise the
|
// a given domain name from a given state snapshot. This is used to optimise the
|
||||||
// helpers.CheckServerAllowedToSeeEvent function.
|
// helpers.CheckServerAllowedToSeeEvent function.
|
||||||
|
@ -106,7 +101,6 @@ type stateSnapshotStatements struct {
|
||||||
insertStateStmt *sql.Stmt
|
insertStateStmt *sql.Stmt
|
||||||
bulkSelectStateBlockNIDsStmt *sql.Stmt
|
bulkSelectStateBlockNIDsStmt *sql.Stmt
|
||||||
bulkSelectStateForHistoryVisibilityStmt *sql.Stmt
|
bulkSelectStateForHistoryVisibilityStmt *sql.Stmt
|
||||||
purgeStateSnapshotEntriesStmt *sql.Stmt
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateStateSnapshotTable(db *sql.DB) error {
|
func CreateStateSnapshotTable(db *sql.DB) error {
|
||||||
|
@ -121,7 +115,6 @@ func PrepareStateSnapshotTable(db *sql.DB) (tables.StateSnapshot, error) {
|
||||||
{&s.insertStateStmt, insertStateSQL},
|
{&s.insertStateStmt, insertStateSQL},
|
||||||
{&s.bulkSelectStateBlockNIDsStmt, bulkSelectStateBlockNIDsSQL},
|
{&s.bulkSelectStateBlockNIDsStmt, bulkSelectStateBlockNIDsSQL},
|
||||||
{&s.bulkSelectStateForHistoryVisibilityStmt, bulkSelectStateForHistoryVisibilitySQL},
|
{&s.bulkSelectStateForHistoryVisibilityStmt, bulkSelectStateForHistoryVisibilitySQL},
|
||||||
{&s.purgeStateSnapshotEntriesStmt, purgeStateSnapshotEntriesSQL},
|
|
||||||
}.Prepare(db)
|
}.Prepare(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,10 +183,3 @@ func (s *stateSnapshotStatements) BulkSelectStateForHistoryVisibility(
|
||||||
}
|
}
|
||||||
return results, rows.Err()
|
return results, rows.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *stateSnapshotStatements) PurgeStateSnapshots(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
_, err := sqlutil.TxStmt(txn, s.purgeStateSnapshotEntriesStmt).ExecContext(ctx, roomNID)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
@ -184,6 +184,10 @@ func (d *Database) prepare(db *sql.DB, writer sqlutil.Writer, cache caching.Room
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
purge, err := PreparePurgeStatements(db)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
d.Database = shared.Database{
|
d.Database = shared.Database{
|
||||||
DB: db,
|
DB: db,
|
||||||
Cache: cache,
|
Cache: cache,
|
||||||
|
@ -201,6 +205,7 @@ func (d *Database) prepare(db *sql.DB, writer sqlutil.Writer, cache caching.Room
|
||||||
MembershipTable: membership,
|
MembershipTable: membership,
|
||||||
PublishedTable: published,
|
PublishedTable: published,
|
||||||
RedactionsTable: redactions,
|
RedactionsTable: redactions,
|
||||||
|
Purge: purge,
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ type Database struct {
|
||||||
MembershipTable tables.Membership
|
MembershipTable tables.Membership
|
||||||
PublishedTable tables.Published
|
PublishedTable tables.Published
|
||||||
RedactionsTable tables.Redactions
|
RedactionsTable tables.Redactions
|
||||||
|
Purge tables.Purge
|
||||||
GetRoomUpdaterFn func(ctx context.Context, roomInfo *types.RoomInfo) (*RoomUpdater, error)
|
GetRoomUpdaterFn func(ctx context.Context, roomInfo *types.RoomInfo) (*RoomUpdater, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1355,6 +1356,9 @@ func (d *Database) ForgetRoom(ctx context.Context, userID, roomID string, forget
|
||||||
// PurgeRoom removes all information about a given room from the roomserver.
|
// PurgeRoom removes all information about a given room from the roomserver.
|
||||||
// For large rooms this operation may take a considerable amount of time.
|
// For large rooms this operation may take a considerable amount of time.
|
||||||
func (d *Database) PurgeRoom(ctx context.Context, roomID string) error {
|
func (d *Database) PurgeRoom(ctx context.Context, roomID string) error {
|
||||||
|
if d.Purge == nil {
|
||||||
|
return fmt.Errorf("not supported on this database engine")
|
||||||
|
}
|
||||||
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
|
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
|
||||||
roomNID, err := d.RoomsTable.SelectRoomNID(ctx, txn, roomID)
|
roomNID, err := d.RoomsTable.SelectRoomNID(ctx, txn, roomID)
|
||||||
switch err {
|
switch err {
|
||||||
|
@ -1364,37 +1368,37 @@ func (d *Database) PurgeRoom(ctx context.Context, roomID string) error {
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("failed to find room NID: %w", err)
|
return fmt.Errorf("failed to find room NID: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.StateBlockTable.PurgeStateBlocks(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgeStateBlocks(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge state blocks: %w", err)
|
return fmt.Errorf("failed to purge state blocks: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.StateSnapshotTable.PurgeStateSnapshots(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgeStateSnapshots(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge state blocks: %w", err)
|
return fmt.Errorf("failed to purge state blocks: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.InvitesTable.PurgeInvites(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgeInvites(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge invites: %w", err)
|
return fmt.Errorf("failed to purge invites: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.MembershipTable.PurgeMemberships(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgeMemberships(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge memberships: %w", err)
|
return fmt.Errorf("failed to purge memberships: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.RoomAliasesTable.PurgeRoomAliases(ctx, txn, roomID); err != nil {
|
if err := d.Purge.PurgeRoomAliases(ctx, txn, roomID); err != nil {
|
||||||
return fmt.Errorf("failed to purge room aliases: %w", err)
|
return fmt.Errorf("failed to purge room aliases: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.PublishedTable.PurgePublished(ctx, txn, roomID); err != nil {
|
if err := d.Purge.PurgePublished(ctx, txn, roomID); err != nil {
|
||||||
return fmt.Errorf("failed to purge published: %w", err)
|
return fmt.Errorf("failed to purge published: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.PrevEventsTable.PurgePreviousEvents(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgePreviousEvents(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge previous events: %w", err)
|
return fmt.Errorf("failed to purge previous events: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.EventJSONTable.PurgeEventJSONs(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgeEventJSONs(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge event JSONs: %w", err)
|
return fmt.Errorf("failed to purge event JSONs: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.RedactionsTable.PurgeRedactions(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgeRedactions(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge redactions: %w", err)
|
return fmt.Errorf("failed to purge redactions: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.EventsTable.PurgeEvents(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgeEvents(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge events: %w", err)
|
return fmt.Errorf("failed to purge events: %w", err)
|
||||||
}
|
}
|
||||||
if err := d.RoomsTable.PurgeRoom(ctx, txn, roomNID); err != nil {
|
if err := d.Purge.PurgeRoom(ctx, txn, roomNID); err != nil {
|
||||||
return fmt.Errorf("failed to purge room: %w", err)
|
return fmt.Errorf("failed to purge room: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -18,7 +18,6 @@ package sqlite3
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
|
@ -112,9 +111,3 @@ func (s *eventJSONStatements) BulkSelectEventJSON(
|
||||||
}
|
}
|
||||||
return results[:i], nil
|
return results[:i], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *eventJSONStatements) PurgeEventJSONs(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -646,9 +646,3 @@ func (s *eventStatements) SelectEventRejected(
|
||||||
err = stmt.QueryRowContext(ctx, roomNID, eventID).Scan(&rejected)
|
err = stmt.QueryRowContext(ctx, roomNID, eventID).Scan(&rejected)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *eventStatements) PurgeEvents(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ package sqlite3
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||||
|
@ -159,9 +158,3 @@ func (s *inviteStatements) SelectInviteActiveForUserInRoom(
|
||||||
}
|
}
|
||||||
return result, eventIDs, nil
|
return result, eventIDs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *inviteStatements) PurgeInvites(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -407,9 +407,3 @@ func (s *membershipStatements) DeleteMembership(
|
||||||
)
|
)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *membershipStatements) PurgeMemberships(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -129,9 +129,3 @@ func (s *previousEventStatements) SelectPreviousEventExists(
|
||||||
stmt := sqlutil.TxStmt(txn, s.selectPreviousEventExistsStmt)
|
stmt := sqlutil.TxStmt(txn, s.selectPreviousEventExistsStmt)
|
||||||
return stmt.QueryRowContext(ctx, eventID, eventReferenceSHA256).Scan(&ok)
|
return stmt.QueryRowContext(ctx, eventID, eventReferenceSHA256).Scan(&ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *previousEventStatements) PurgePreviousEvents(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,7 +17,6 @@ package sqlite3
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||||
|
@ -107,9 +106,3 @@ func (s *publishedStatements) SelectAllPublishedRooms(
|
||||||
}
|
}
|
||||||
return roomIDs, rows.Err()
|
return roomIDs, rows.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *publishedStatements) PurgePublished(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomID string,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -17,11 +17,9 @@ package sqlite3
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||||
"github.com/matrix-org/dendrite/roomserver/storage/tables"
|
"github.com/matrix-org/dendrite/roomserver/storage/tables"
|
||||||
"github.com/matrix-org/dendrite/roomserver/types"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const redactionsSchema = `
|
const redactionsSchema = `
|
||||||
|
@ -123,9 +121,3 @@ func (s *redactionStatements) MarkRedactionValidated(
|
||||||
_, err := stmt.ExecContext(ctx, validated, redactionEventID)
|
_, err := stmt.ExecContext(ctx, validated, redactionEventID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *redactionStatements) PurgeRedactions(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ package sqlite3
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||||
|
@ -144,9 +143,3 @@ func (s *roomAliasesStatements) DeleteRoomAlias(
|
||||||
_, err := stmt.ExecContext(ctx, alias)
|
_, err := stmt.ExecContext(ctx, alias)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *roomAliasesStatements) PurgeRoomAliases(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomID string,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -309,9 +309,3 @@ func (s *roomStatements) BulkSelectRoomNIDs(ctx context.Context, txn *sql.Tx, ro
|
||||||
}
|
}
|
||||||
return roomNIDs, nil
|
return roomNIDs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *roomStatements) PurgeRoom(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -141,9 +141,3 @@ func (s *stateBlockStatements) BulkSelectStateBlockEntries(
|
||||||
}
|
}
|
||||||
return results, err
|
return results, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *stateBlockStatements) PurgeStateBlocks(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -146,9 +146,3 @@ func (s *stateSnapshotStatements) BulkSelectStateForHistoryVisibility(
|
||||||
) ([]types.EventNID, error) {
|
) ([]types.EventNID, error) {
|
||||||
return nil, tables.OptimisationNotSupportedError
|
return nil, tables.OptimisationNotSupportedError
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *stateSnapshotStatements) PurgeStateSnapshots(
|
|
||||||
ctx context.Context, txn *sql.Tx, roomNID types.RoomNID,
|
|
||||||
) error {
|
|
||||||
return fmt.Errorf("not implemented on SQLite")
|
|
||||||
}
|
|
||||||
|
|
|
@ -22,7 +22,6 @@ type EventJSON interface {
|
||||||
// Insert the event JSON. On conflict, replace the event JSON with the new value (for redactions).
|
// Insert the event JSON. On conflict, replace the event JSON with the new value (for redactions).
|
||||||
InsertEventJSON(ctx context.Context, tx *sql.Tx, eventNID types.EventNID, eventJSON []byte) error
|
InsertEventJSON(ctx context.Context, tx *sql.Tx, eventNID types.EventNID, eventJSON []byte) error
|
||||||
BulkSelectEventJSON(ctx context.Context, tx *sql.Tx, eventNIDs []types.EventNID) ([]EventJSONPair, error)
|
BulkSelectEventJSON(ctx context.Context, tx *sql.Tx, eventNIDs []types.EventNID) ([]EventJSONPair, error)
|
||||||
PurgeEventJSONs(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type EventTypes interface {
|
type EventTypes interface {
|
||||||
|
@ -68,7 +67,6 @@ type Events interface {
|
||||||
SelectMaxEventDepth(ctx context.Context, txn *sql.Tx, eventNIDs []types.EventNID) (int64, error)
|
SelectMaxEventDepth(ctx context.Context, txn *sql.Tx, eventNIDs []types.EventNID) (int64, error)
|
||||||
SelectRoomNIDsForEventNIDs(ctx context.Context, txn *sql.Tx, eventNIDs []types.EventNID) (roomNIDs map[types.EventNID]types.RoomNID, err error)
|
SelectRoomNIDsForEventNIDs(ctx context.Context, txn *sql.Tx, eventNIDs []types.EventNID) (roomNIDs map[types.EventNID]types.RoomNID, err error)
|
||||||
SelectEventRejected(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, eventID string) (rejected bool, err error)
|
SelectEventRejected(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, eventID string) (rejected bool, err error)
|
||||||
PurgeEvents(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Rooms interface {
|
type Rooms interface {
|
||||||
|
@ -82,7 +80,6 @@ type Rooms interface {
|
||||||
SelectRoomIDsWithEvents(ctx context.Context, txn *sql.Tx) ([]string, error)
|
SelectRoomIDsWithEvents(ctx context.Context, txn *sql.Tx) ([]string, error)
|
||||||
BulkSelectRoomIDs(ctx context.Context, txn *sql.Tx, roomNIDs []types.RoomNID) ([]string, error)
|
BulkSelectRoomIDs(ctx context.Context, txn *sql.Tx, roomNIDs []types.RoomNID) ([]string, error)
|
||||||
BulkSelectRoomNIDs(ctx context.Context, txn *sql.Tx, roomIDs []string) ([]types.RoomNID, error)
|
BulkSelectRoomNIDs(ctx context.Context, txn *sql.Tx, roomIDs []string) ([]types.RoomNID, error)
|
||||||
PurgeRoom(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type StateSnapshot interface {
|
type StateSnapshot interface {
|
||||||
|
@ -92,14 +89,12 @@ type StateSnapshot interface {
|
||||||
// which users are in a room faster than having to load the entire room state. In the
|
// which users are in a room faster than having to load the entire room state. In the
|
||||||
// case of SQLite, this will return tables.OptimisationNotSupportedError.
|
// case of SQLite, this will return tables.OptimisationNotSupportedError.
|
||||||
BulkSelectStateForHistoryVisibility(ctx context.Context, txn *sql.Tx, stateSnapshotNID types.StateSnapshotNID, domain string) ([]types.EventNID, error)
|
BulkSelectStateForHistoryVisibility(ctx context.Context, txn *sql.Tx, stateSnapshotNID types.StateSnapshotNID, domain string) ([]types.EventNID, error)
|
||||||
PurgeStateSnapshots(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type StateBlock interface {
|
type StateBlock interface {
|
||||||
BulkInsertStateData(ctx context.Context, txn *sql.Tx, entries types.StateEntries) (types.StateBlockNID, error)
|
BulkInsertStateData(ctx context.Context, txn *sql.Tx, entries types.StateEntries) (types.StateBlockNID, error)
|
||||||
BulkSelectStateBlockEntries(ctx context.Context, txn *sql.Tx, stateBlockNIDs types.StateBlockNIDs) ([][]types.EventNID, error)
|
BulkSelectStateBlockEntries(ctx context.Context, txn *sql.Tx, stateBlockNIDs types.StateBlockNIDs) ([][]types.EventNID, error)
|
||||||
//BulkSelectFilteredStateBlockEntries(ctx context.Context, stateBlockNIDs []types.StateBlockNID, stateKeyTuples []types.StateKeyTuple) ([]types.StateEntryList, error)
|
//BulkSelectFilteredStateBlockEntries(ctx context.Context, stateBlockNIDs []types.StateBlockNID, stateKeyTuples []types.StateKeyTuple) ([]types.StateEntryList, error)
|
||||||
PurgeStateBlocks(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type RoomAliases interface {
|
type RoomAliases interface {
|
||||||
|
@ -108,7 +103,6 @@ type RoomAliases interface {
|
||||||
SelectAliasesFromRoomID(ctx context.Context, txn *sql.Tx, roomID string) ([]string, error)
|
SelectAliasesFromRoomID(ctx context.Context, txn *sql.Tx, roomID string) ([]string, error)
|
||||||
SelectCreatorIDFromAlias(ctx context.Context, txn *sql.Tx, alias string) (creatorID string, err error)
|
SelectCreatorIDFromAlias(ctx context.Context, txn *sql.Tx, alias string) (creatorID string, err error)
|
||||||
DeleteRoomAlias(ctx context.Context, txn *sql.Tx, alias string) (err error)
|
DeleteRoomAlias(ctx context.Context, txn *sql.Tx, alias string) (err error)
|
||||||
PurgeRoomAliases(ctx context.Context, txn *sql.Tx, roomID string) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type PreviousEvents interface {
|
type PreviousEvents interface {
|
||||||
|
@ -116,7 +110,6 @@ type PreviousEvents interface {
|
||||||
// Check if the event reference exists
|
// Check if the event reference exists
|
||||||
// Returns sql.ErrNoRows if the event reference doesn't exist.
|
// Returns sql.ErrNoRows if the event reference doesn't exist.
|
||||||
SelectPreviousEventExists(ctx context.Context, txn *sql.Tx, eventID string, eventReferenceSHA256 []byte) error
|
SelectPreviousEventExists(ctx context.Context, txn *sql.Tx, eventID string, eventReferenceSHA256 []byte) error
|
||||||
PurgePreviousEvents(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Invites interface {
|
type Invites interface {
|
||||||
|
@ -124,7 +117,6 @@ type Invites interface {
|
||||||
UpdateInviteRetired(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, targetUserNID types.EventStateKeyNID) ([]string, error)
|
UpdateInviteRetired(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, targetUserNID types.EventStateKeyNID) ([]string, error)
|
||||||
// SelectInviteActiveForUserInRoom returns a list of sender state key NIDs and invite event IDs matching those nids.
|
// SelectInviteActiveForUserInRoom returns a list of sender state key NIDs and invite event IDs matching those nids.
|
||||||
SelectInviteActiveForUserInRoom(ctx context.Context, txn *sql.Tx, targetUserNID types.EventStateKeyNID, roomNID types.RoomNID) ([]types.EventStateKeyNID, []string, error)
|
SelectInviteActiveForUserInRoom(ctx context.Context, txn *sql.Tx, targetUserNID types.EventStateKeyNID, roomNID types.RoomNID) ([]types.EventStateKeyNID, []string, error)
|
||||||
PurgeInvites(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type MembershipState int64
|
type MembershipState int64
|
||||||
|
@ -151,14 +143,12 @@ type Membership interface {
|
||||||
SelectLocalServerInRoom(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) (bool, error)
|
SelectLocalServerInRoom(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) (bool, error)
|
||||||
SelectServerInRoom(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, serverName gomatrixserverlib.ServerName) (bool, error)
|
SelectServerInRoom(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, serverName gomatrixserverlib.ServerName) (bool, error)
|
||||||
DeleteMembership(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, targetUserNID types.EventStateKeyNID) error
|
DeleteMembership(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, targetUserNID types.EventStateKeyNID) error
|
||||||
PurgeMemberships(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Published interface {
|
type Published interface {
|
||||||
UpsertRoomPublished(ctx context.Context, txn *sql.Tx, roomID string, published bool) (err error)
|
UpsertRoomPublished(ctx context.Context, txn *sql.Tx, roomID string, published bool) (err error)
|
||||||
SelectPublishedFromRoomID(ctx context.Context, txn *sql.Tx, roomID string) (published bool, err error)
|
SelectPublishedFromRoomID(ctx context.Context, txn *sql.Tx, roomID string) (published bool, err error)
|
||||||
SelectAllPublishedRooms(ctx context.Context, txn *sql.Tx, published bool) ([]string, error)
|
SelectAllPublishedRooms(ctx context.Context, txn *sql.Tx, published bool) ([]string, error)
|
||||||
PurgePublished(ctx context.Context, txn *sql.Tx, roomID string) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type RedactionInfo struct {
|
type RedactionInfo struct {
|
||||||
|
@ -179,7 +169,20 @@ type Redactions interface {
|
||||||
// Mark this redaction event as having been validated. This means we have both sides of the redaction and have
|
// Mark this redaction event as having been validated. This means we have both sides of the redaction and have
|
||||||
// successfully redacted the event JSON.
|
// successfully redacted the event JSON.
|
||||||
MarkRedactionValidated(ctx context.Context, txn *sql.Tx, redactionEventID string, validated bool) error
|
MarkRedactionValidated(ctx context.Context, txn *sql.Tx, redactionEventID string, validated bool) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type Purge interface {
|
||||||
|
PurgeEventJSONs(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgeEvents(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgeRoom(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgeStateSnapshots(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgeStateBlocks(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgePreviousEvents(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgeInvites(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgeMemberships(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgePublished(ctx context.Context, txn *sql.Tx, roomID string) error
|
||||||
PurgeRedactions(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
PurgeRedactions(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID) error
|
||||||
|
PurgeRoomAliases(ctx context.Context, txn *sql.Tx, roomID string) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// StrippedEvent represents a stripped event for returning extracted content values.
|
// StrippedEvent represents a stripped event for returning extracted content values.
|
||||||
|
|
Loading…
Reference in a new issue