revert: separation of write and read DBs

Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
Deluan
2024-11-18 15:52:13 +02:00
parent 1bf94531fd
commit 3982ba7258
22 changed files with 78 additions and 161 deletions
+10 -13
View File
@@ -2,6 +2,7 @@ package persistence
import (
"context"
"database/sql"
"reflect"
"github.com/navidrome/navidrome/db"
@@ -14,8 +15,8 @@ type SQLStore struct {
db dbx.Builder
}
func New(d db.DB) model.DataStore {
return &SQLStore{db: NewDBXBuilder(d)}
func New(conn *sql.DB) model.DataStore {
return &SQLStore{db: dbx.NewFromDB(conn, db.Driver)}
}
func (s *SQLStore) Album(ctx context.Context) model.AlbumRepository {
@@ -105,18 +106,14 @@ func (s *SQLStore) Resource(ctx context.Context, m interface{}) model.ResourceRe
return nil
}
type transactional interface {
Transactional(f func(*dbx.Tx) error) (err error)
}
func (s *SQLStore) WithTx(block func(tx model.DataStore) error) error {
// If we are already in a transaction, just pass it down
if conn, ok := s.db.(*dbx.Tx); ok {
return block(&SQLStore{db: conn})
conn, ok := s.db.(*dbx.DB)
if !ok {
conn = dbx.NewFromDB(db.Db(), db.Driver)
}
return s.db.(transactional).Transactional(func(tx *dbx.Tx) error {
return block(&SQLStore{db: tx})
return conn.Transactional(func(tx *dbx.Tx) error {
newDb := &SQLStore{db: tx}
return block(newDb)
})
}
@@ -175,7 +172,7 @@ func (s *SQLStore) GC(ctx context.Context, rootFolder string) error {
func (s *SQLStore) getDBXBuilder() dbx.Builder {
if s.db == nil {
return NewDBXBuilder(db.Db())
return dbx.NewFromDB(db.Db(), db.Driver)
}
return s.db
}