0
0
Fork 0
mirror of https://github.com/matrix-org/dendrite synced 2024-11-17 07:10:51 +01:00

Add helper method for preparing lists of statements. (#25)

* Add helper method for preparing lists of statements.
This commit is contained in:
Mark Haines 2017-03-07 10:37:41 +00:00 committed by GitHub
parent 96fc9294cc
commit 8084beb6f7
10 changed files with 65 additions and 84 deletions

View file

@ -44,13 +44,10 @@ func (s *eventJSONStatements) prepare(db *sql.DB) (err error) {
if err != nil { if err != nil {
return return
} }
if s.insertEventJSONStmt, err = db.Prepare(insertEventJSONSQL); err != nil { return statementList{
return {&s.insertEventJSONStmt, insertEventJSONSQL},
} {&s.bulkSelectEventJSONStmt, bulkSelectEventJSONSQL},
if s.bulkSelectEventJSONStmt, err = db.Prepare(bulkSelectEventJSONSQL); err != nil { }.prepare(db)
return
}
return
} }
func (s *eventJSONStatements) insertEventJSON(eventNID types.EventNID, eventJSON []byte) error { func (s *eventJSONStatements) insertEventJSON(eventNID types.EventNID, eventJSON []byte) error {

View file

@ -53,16 +53,11 @@ func (s *eventStateKeyStatements) prepare(db *sql.DB) (err error) {
if err != nil { if err != nil {
return return
} }
if s.insertEventStateKeyNIDStmt, err = db.Prepare(insertEventStateKeyNIDSQL); err != nil { return statementList{
return {&s.insertEventStateKeyNIDStmt, insertEventStateKeyNIDSQL},
} {&s.selectEventStateKeyNIDStmt, selectEventStateKeyNIDSQL},
if s.selectEventStateKeyNIDStmt, err = db.Prepare(selectEventStateKeyNIDSQL); err != nil { {&s.bulkSelectEventStateKeyNIDStmt, bulkSelectEventStateKeyNIDSQL},
return }.prepare(db)
}
if s.bulkSelectEventStateKeyNIDStmt, err = db.Prepare(bulkSelectEventStateKeyNIDSQL); err != nil {
return
}
return
} }
func (s *eventStateKeyStatements) insertEventStateKeyNID(eventStateKey string) (types.EventStateKeyNID, error) { func (s *eventStateKeyStatements) insertEventStateKeyNID(eventStateKey string) (types.EventStateKeyNID, error) {

View file

@ -76,13 +76,11 @@ func (s *eventTypeStatements) prepare(db *sql.DB) (err error) {
if err != nil { if err != nil {
return return
} }
if s.insertEventTypeNIDStmt, err = db.Prepare(insertEventTypeNIDSQL); err != nil {
return return statementList{
} {&s.insertEventTypeNIDStmt, insertEventTypeNIDSQL},
if s.selectEventTypeNIDStmt, err = db.Prepare(selectEventTypeNIDSQL); err != nil { {&s.selectEventTypeNIDStmt, selectEventTypeNIDSQL},
return }.prepare(db)
}
return
} }
func (s *eventTypeStatements) insertEventTypeNID(eventType string) (types.EventTypeNID, error) { func (s *eventTypeStatements) insertEventTypeNID(eventType string) (types.EventTypeNID, error) {

View file

@ -110,10 +110,7 @@ func (s *eventStatements) prepare(db *sql.DB) (err error) {
return return
} }
statements := []struct { return statementList{
statement **sql.Stmt
sql string
}{
{&s.insertEventStmt, insertEventSQL}, {&s.insertEventStmt, insertEventSQL},
{&s.selectEventStmt, selectEventSQL}, {&s.selectEventStmt, selectEventSQL},
{&s.bulkSelectStateEventByIDStmt, bulkSelectStateEventByIDSQL}, {&s.bulkSelectStateEventByIDStmt, bulkSelectStateEventByIDSQL},
@ -125,15 +122,7 @@ func (s *eventStatements) prepare(db *sql.DB) (err error) {
{&s.bulkSelectStateAtEventAndReferenceStmt, bulkSelectStateAtEventAndReferenceSQL}, {&s.bulkSelectStateAtEventAndReferenceStmt, bulkSelectStateAtEventAndReferenceSQL},
{&s.bulkSelectEventReferenceStmt, bulkSelectEventReferenceSQL}, {&s.bulkSelectEventReferenceStmt, bulkSelectEventReferenceSQL},
{&s.bulkSelectEventIDStmt, bulkSelectEventIDSQL}, {&s.bulkSelectEventIDStmt, bulkSelectEventIDSQL},
} }.prepare(db)
for _, statement := range statements {
if *statement.statement, err = db.Prepare(statement.sql); err != nil {
return
}
}
return
} }
func (s *eventStatements) insertEvent( func (s *eventStatements) insertEvent(

View file

@ -36,13 +36,11 @@ func (s *partitionOffsetStatements) prepare(db *sql.DB) (err error) {
if err != nil { if err != nil {
return return
} }
if s.selectPartitionOffsetsStmt, err = db.Prepare(selectPartitionOffsetsSQL); err != nil {
return return statementList{
} {&s.selectPartitionOffsetsStmt, selectPartitionOffsetsSQL},
if s.upsertPartitionOffsetStmt, err = db.Prepare(upsertPartitionOffsetsSQL); err != nil { {&s.upsertPartitionOffsetStmt, upsertPartitionOffsetsSQL},
return }.prepare(db)
}
return
} }
func (s *partitionOffsetStatements) selectPartitionOffsets(topic string) ([]types.PartitionOffset, error) { func (s *partitionOffsetStatements) selectPartitionOffsets(topic string) ([]types.PartitionOffset, error) {

View file

@ -0,0 +1,21 @@
package storage
import (
"database/sql"
)
// a statementList is a list of SQL statements to prepare and a pointer to where to store the resulting prepared statement.
type statementList []struct {
statement **sql.Stmt
sql string
}
// prepare the SQL for each statement in the list and assign the result to the prepared statement.
func (s statementList) prepare(db *sql.DB) (err error) {
for _, statement := range s {
if *statement.statement, err = db.Prepare(statement.sql); err != nil {
return
}
}
return
}

View file

@ -50,13 +50,11 @@ func (s *previousEventStatements) prepare(db *sql.DB) (err error) {
if err != nil { if err != nil {
return return
} }
if s.insertPreviousEventStmt, err = db.Prepare(insertPreviousEventSQL); err != nil {
return return statementList{
} {&s.insertPreviousEventStmt, insertPreviousEventSQL},
if s.selectPreviousEventExistsStmt, err = db.Prepare(selectPreviousEventExistsSQL); err != nil { {&s.selectPreviousEventExistsStmt, selectPreviousEventExistsSQL},
return }.prepare(db)
}
return
} }
func (s *previousEventStatements) insertPreviousEvent(txn *sql.Tx, previousEventID string, previousEventReferenceSHA256 []byte, eventNID types.EventNID) error { func (s *previousEventStatements) insertPreviousEvent(txn *sql.Tx, previousEventID string, previousEventReferenceSHA256 []byte, eventNID types.EventNID) error {

View file

@ -56,22 +56,13 @@ func (s *roomStatements) prepare(db *sql.DB) (err error) {
if err != nil { if err != nil {
return return
} }
if s.insertRoomNIDStmt, err = db.Prepare(insertRoomNIDSQL); err != nil { return statementList{
return {&s.insertRoomNIDStmt, insertRoomNIDSQL},
} {&s.selectRoomNIDStmt, selectRoomNIDSQL},
if s.selectRoomNIDStmt, err = db.Prepare(selectRoomNIDSQL); err != nil { {&s.selectLatestEventNIDsStmt, selectLatestEventNIDsSQL},
return {&s.selectLatestEventNIDsForUpdateStmt, selectLatestEventNIDsForUpdateSQL},
} {&s.updateLatestEventNIDsStmt, updateLatestEventNIDsSQL},
if s.selectLatestEventNIDsStmt, err = db.Prepare(selectLatestEventNIDsSQL); err != nil { }.prepare(db)
return
}
if s.selectLatestEventNIDsForUpdateStmt, err = db.Prepare(selectLatestEventNIDsForUpdateSQL); err != nil {
return
}
if s.updateLatestEventNIDsStmt, err = db.Prepare(updateLatestEventNIDsSQL); err != nil {
return
}
return
} }
func (s *roomStatements) insertRoomNID(roomID string) (types.RoomNID, error) { func (s *roomStatements) insertRoomNID(roomID string) (types.RoomNID, error) {

View file

@ -57,16 +57,12 @@ func (s *stateBlockStatements) prepare(db *sql.DB) (err error) {
if err != nil { if err != nil {
return return
} }
if s.insertStateDataStmt, err = db.Prepare(insertStateDataSQL); err != nil {
return return statementList{
} {&s.insertStateDataStmt, insertStateDataSQL},
if s.selectNextStateBlockNIDStmt, err = db.Prepare(selectNextStateBlockNIDSQL); err != nil { {&s.selectNextStateBlockNIDStmt, selectNextStateBlockNIDSQL},
return {&s.bulkSelectStateDataEntriesStmt, bulkSelectStateDataEntriesSQL},
} }.prepare(db)
if s.bulkSelectStateDataEntriesStmt, err = db.Prepare(bulkSelectStateDataEntriesSQL); err != nil {
return
}
return
} }
func (s *stateBlockStatements) bulkInsertStateData(stateBlockNID types.StateBlockNID, entries []types.StateEntry) error { func (s *stateBlockStatements) bulkInsertStateData(stateBlockNID types.StateBlockNID, entries []types.StateEntry) error {

View file

@ -52,13 +52,11 @@ func (s *stateSnapshotStatements) prepare(db *sql.DB) (err error) {
if err != nil { if err != nil {
return return
} }
if s.insertStateStmt, err = db.Prepare(insertStateSQL); err != nil {
return return statementList{
} {&s.insertStateStmt, insertStateSQL},
if s.bulkSelectStateBlockNIDsStmt, err = db.Prepare(bulkSelectStateBlockNIDsSQL); err != nil { {&s.bulkSelectStateBlockNIDsStmt, bulkSelectStateBlockNIDsSQL},
return }.prepare(db)
}
return
} }
func (s *stateSnapshotStatements) insertState(roomNID types.RoomNID, stateBlockNIDs []types.StateBlockNID) (stateNID types.StateSnapshotNID, err error) { func (s *stateSnapshotStatements) insertState(roomNID types.RoomNID, stateBlockNIDs []types.StateBlockNID) (stateNID types.StateSnapshotNID, err error) {