Use sqlutil.StatementList to prepare statements

This commit is contained in:
Till Faelligen 2023-01-05 14:46:51 +01:00
parent 71cacf28e3
commit d74407eadf
No known key found for this signature in database
GPG key ID: ACCDC9606D472758
2 changed files with 28 additions and 71 deletions

View file

@ -133,7 +133,7 @@ type currentRoomStateStatements struct {
selectStateEventStmt *sql.Stmt selectStateEventStmt *sql.Stmt
selectSharedUsersStmt *sql.Stmt selectSharedUsersStmt *sql.Stmt
selectMembershipCountStmt *sql.Stmt selectMembershipCountStmt *sql.Stmt
selectRoomHeroes *sql.Stmt selectRoomHeroesStmt *sql.Stmt
} }
func NewPostgresCurrentRoomStateTable(db *sql.DB) (tables.CurrentRoomState, error) { func NewPostgresCurrentRoomStateTable(db *sql.DB) (tables.CurrentRoomState, error) {
@ -153,46 +153,21 @@ func NewPostgresCurrentRoomStateTable(db *sql.DB) (tables.CurrentRoomState, erro
return nil, err return nil, err
} }
if s.upsertRoomStateStmt, err = db.Prepare(upsertRoomStateSQL); err != nil { return s, sqlutil.StatementList{
return nil, err {&s.upsertRoomStateStmt, upsertRoomStateSQL},
} {&s.deleteRoomStateByEventIDStmt, deleteRoomStateByEventIDSQL},
if s.deleteRoomStateByEventIDStmt, err = db.Prepare(deleteRoomStateByEventIDSQL); err != nil { {&s.deleteRoomStateForRoomStmt, deleteRoomStateForRoomSQL},
return nil, err {&s.selectRoomIDsWithMembershipStmt, selectRoomIDsWithMembershipSQL},
} {&s.selectRoomIDsWithAnyMembershipStmt, selectRoomIDsWithAnyMembershipSQL},
if s.deleteRoomStateForRoomStmt, err = db.Prepare(deleteRoomStateForRoomSQL); err != nil { {&s.selectCurrentStateStmt, selectCurrentStateSQL},
return nil, err {&s.selectJoinedUsersStmt, selectJoinedUsersSQL},
} {&s.selectJoinedUsersInRoomStmt, selectJoinedUsersInRoomSQL},
if s.selectRoomIDsWithMembershipStmt, err = db.Prepare(selectRoomIDsWithMembershipSQL); err != nil { {&s.selectEventsWithEventIDsStmt, selectEventsWithEventIDsSQL},
return nil, err {&s.selectStateEventStmt, selectStateEventSQL},
} {&s.selectSharedUsersStmt, selectSharedUsersSQL},
if s.selectRoomIDsWithAnyMembershipStmt, err = db.Prepare(selectRoomIDsWithAnyMembershipSQL); err != nil { {&s.selectMembershipCountStmt, selectMembershipCount},
return nil, err {&s.selectRoomHeroesStmt, selectRoomHeroes},
} }.Prepare(db)
if s.selectCurrentStateStmt, err = db.Prepare(selectCurrentStateSQL); err != nil {
return nil, err
}
if s.selectJoinedUsersStmt, err = db.Prepare(selectJoinedUsersSQL); err != nil {
return nil, err
}
if s.selectJoinedUsersInRoomStmt, err = db.Prepare(selectJoinedUsersInRoomSQL); err != nil {
return nil, err
}
if s.selectEventsWithEventIDsStmt, err = db.Prepare(selectEventsWithEventIDsSQL); err != nil {
return nil, err
}
if s.selectStateEventStmt, err = db.Prepare(selectStateEventSQL); err != nil {
return nil, err
}
if s.selectSharedUsersStmt, err = db.Prepare(selectSharedUsersSQL); err != nil {
return nil, err
}
if s.selectMembershipCountStmt, err = db.Prepare(selectMembershipCount); err != nil {
return nil, err
}
if s.selectRoomHeroes, err = db.Prepare(selectRoomHeroes); err != nil {
return nil, err
}
return s, nil
} }
// SelectJoinedUsers returns a map of room ID to a list of joined user IDs. // SelectJoinedUsers returns a map of room ID to a list of joined user IDs.
@ -467,12 +442,12 @@ func (s *currentRoomStateStatements) SelectSharedUsers(
} }
func (s *currentRoomStateStatements) SelectRoomHeroes(ctx context.Context, txn *sql.Tx, roomID, excludeUserID string, memberships []string) ([]string, error) { func (s *currentRoomStateStatements) SelectRoomHeroes(ctx context.Context, txn *sql.Tx, roomID, excludeUserID string, memberships []string) ([]string, error) {
stmt := sqlutil.TxStmt(txn, s.selectRoomHeroes) stmt := sqlutil.TxStmt(txn, s.selectRoomHeroesStmt)
rows, err := stmt.QueryContext(ctx, roomID, pq.StringArray(memberships), excludeUserID) rows, err := stmt.QueryContext(ctx, roomID, pq.StringArray(memberships), excludeUserID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer internal.CloseAndLogIfError(ctx, rows, "selectRoomHeroes: rows.close() failed") defer internal.CloseAndLogIfError(ctx, rows, "selectRoomHeroesStmt: rows.close() failed")
var stateKey string var stateKey string
result := make([]string, 0, 5) result := make([]string, 0, 5)

View file

@ -141,34 +141,16 @@ func NewSqliteCurrentRoomStateTable(db *sql.DB, streamID *StreamIDStatements) (t
return nil, err return nil, err
} }
if s.upsertRoomStateStmt, err = db.Prepare(upsertRoomStateSQL); err != nil { return s, sqlutil.StatementList{
return nil, err {&s.upsertRoomStateStmt, upsertRoomStateSQL},
} {&s.deleteRoomStateByEventIDStmt, deleteRoomStateByEventIDSQL},
if s.deleteRoomStateByEventIDStmt, err = db.Prepare(deleteRoomStateByEventIDSQL); err != nil { {&s.deleteRoomStateForRoomStmt, deleteRoomStateForRoomSQL},
return nil, err {&s.selectRoomIDsWithMembershipStmt, selectRoomIDsWithMembershipSQL},
} {&s.selectRoomIDsWithAnyMembershipStmt, selectRoomIDsWithAnyMembershipSQL},
if s.deleteRoomStateForRoomStmt, err = db.Prepare(deleteRoomStateForRoomSQL); err != nil { {&s.selectJoinedUsersStmt, selectJoinedUsersSQL},
return nil, err {&s.selectStateEventStmt, selectStateEventSQL},
} {&s.selectMembershipCountStmt, selectMembershipCount},
if s.selectRoomIDsWithMembershipStmt, err = db.Prepare(selectRoomIDsWithMembershipSQL); err != nil { }.Prepare(db)
return nil, err
}
if s.selectRoomIDsWithAnyMembershipStmt, err = db.Prepare(selectRoomIDsWithAnyMembershipSQL); err != nil {
return nil, err
}
if s.selectJoinedUsersStmt, err = db.Prepare(selectJoinedUsersSQL); err != nil {
return nil, err
}
//if s.selectJoinedUsersInRoomStmt, err = db.Prepare(selectJoinedUsersInRoomSQL); err != nil {
// return nil, err
//}
if s.selectStateEventStmt, err = db.Prepare(selectStateEventSQL); err != nil {
return nil, err
}
if s.selectMembershipCountStmt, err = db.Prepare(selectMembershipCount); err != nil {
return nil, err
}
return s, nil
} }
// SelectJoinedUsers returns a map of room ID to a list of joined user IDs. // SelectJoinedUsers returns a map of room ID to a list of joined user IDs.