revert: separation of write and read DBs
Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
+10
-13
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user