diff --git a/roomserver/storage/sqlite3/storage.go b/roomserver/storage/sqlite3/storage.go index b25fd542f..18f009dd5 100644 --- a/roomserver/storage/sqlite3/storage.go +++ b/roomserver/storage/sqlite3/storage.go @@ -19,7 +19,6 @@ import ( "context" "database/sql" "errors" - "fmt" "net/url" "github.com/matrix-org/dendrite/common" @@ -44,9 +43,9 @@ func Open(dataSourceName string) (*Database, error) { } var cs string if uri.Opaque != "" { // file:filename.db - cs = fmt.Sprintf("%s", uri.Opaque) + cs = uri.Opaque } else if uri.Path != "" { // file:///path/to/filename.db - cs = fmt.Sprintf("%s", uri.Path) + cs = uri.Path } else { return nil, errors.New("no filename or path in connect string") } @@ -286,7 +285,7 @@ func (d *Database) AddState( ) (stateNID types.StateSnapshotNID, err error) { err = common.WithTransaction(d.db, func(txn *sql.Tx) error { if len(state) > 0 { - stateBlockNID, err := d.statements.selectNextStateBlockNID(ctx, txn) + stateBlockNID, err = d.statements.selectNextStateBlockNID(ctx, txn) if err != nil { return err } diff --git a/syncapi/storage/sqlite3/output_room_events_table.go b/syncapi/storage/sqlite3/output_room_events_table.go index c0091a38c..8c01f2ced 100644 --- a/syncapi/storage/sqlite3/output_room_events_table.go +++ b/syncapi/storage/sqlite3/output_room_events_table.go @@ -368,7 +368,7 @@ func (s *outputRoomEventsStatements) selectEvents( if streamEvents, err := rowsToStreamEvents(rows); err == nil { returnEvents = append(returnEvents, streamEvents...) } - rows.Close() + rows.Close() // nolint: errcheck } return returnEvents, nil } diff --git a/syncapi/storage/sqlite3/syncserver.go b/syncapi/storage/sqlite3/syncserver.go index 5517c3bc2..dee2a4235 100644 --- a/syncapi/storage/sqlite3/syncserver.go +++ b/syncapi/storage/sqlite3/syncserver.go @@ -64,6 +64,7 @@ type SyncServerDatasource struct { } // NewSyncServerDatasource creates a new sync server database +// nolint: gocyclo func NewSyncServerDatasource(dataSourceName string) (*SyncServerDatasource, error) { var d SyncServerDatasource uri, err := url.Parse(dataSourceName) @@ -72,45 +73,50 @@ func NewSyncServerDatasource(dataSourceName string) (*SyncServerDatasource, erro } var cs string if uri.Opaque != "" { // file:filename.db - // cs = fmt.Sprintf("%s?cache=shared&_busy_timeout=9999999", uri.Opaque) - cs = fmt.Sprintf("%s", uri.Opaque) + cs = uri.Opaque } else if uri.Path != "" { // file:///path/to/filename.db - // cs = fmt.Sprintf("%s?cache=shared&_busy_timeout=9999999", uri.Path) - cs = fmt.Sprintf("%s", uri.Path) + cs = uri.Path } else { return nil, errors.New("no filename or path in connect string") } if d.db, err = sql.Open("sqlite3", cs); err != nil { return nil, err } - if err = d.PartitionOffsetStatements.Prepare(d.db, "syncapi"); err != nil { - return nil, err - } - if err = d.streamID.prepare(d.db); err != nil { - return nil, err - } - if err = d.accountData.prepare(d.db, &d.streamID); err != nil { - return nil, err - } - if err = d.events.prepare(d.db, &d.streamID); err != nil { - return nil, err - } - if err := d.roomstate.prepare(d.db, &d.streamID); err != nil { - return nil, err - } - if err := d.invites.prepare(d.db, &d.streamID); err != nil { - return nil, err - } - if err := d.topology.prepare(d.db); err != nil { - return nil, err - } - if err := d.backwardExtremities.prepare(d.db); err != nil { + if err = d.prepare(); err != nil { return nil, err } d.typingCache = cache.NewTypingCache() return &d, nil } +func (d *SyncServerDataSource) prepare() error { + if err = d.PartitionOffsetStatements.Prepare(d.db, "syncapi"); err != nil { + return err + } + if err = d.streamID.prepare(d.db); err != nil { + return err + } + if err = d.accountData.prepare(d.db, &d.streamID); err != nil { + return err + } + if err = d.events.prepare(d.db, &d.streamID); err != nil { + return err + } + if err := d.roomstate.prepare(d.db, &d.streamID); err != nil { + return err + } + if err := d.invites.prepare(d.db, &d.streamID); err != nil { + return err + } + if err := d.topology.prepare(d.db); err != nil { + return err + } + if err := d.backwardExtremities.prepare(d.db); err != nil { + return err + } + return nil +} + // AllJoinedUsersInRooms returns a map of room ID to a list of all joined user IDs. func (d *SyncServerDatasource) AllJoinedUsersInRooms(ctx context.Context) (map[string][]string, error) { return d.roomstate.selectJoinedUsers(ctx)