Optimize SQLite3 access. Mainly separate read access from write access.
Based on tips from https://archive.is/Xfjh6#selection-257.0-278.0
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package persistence
|
||||
|
||||
import (
|
||||
"github.com/navidrome/navidrome/db"
|
||||
"github.com/pocketbase/dbx"
|
||||
)
|
||||
|
||||
type dbxBuilder struct {
|
||||
dbx.Builder
|
||||
rdb dbx.Builder
|
||||
}
|
||||
|
||||
func NewDBXBuilder(d db.DB) *dbxBuilder {
|
||||
b := &dbxBuilder{}
|
||||
b.Builder = dbx.NewFromDB(d.WriteDB(), db.Driver)
|
||||
b.rdb = dbx.NewFromDB(d.ReadDB(), db.Driver)
|
||||
return b
|
||||
}
|
||||
|
||||
func (d *dbxBuilder) NewQuery(s string) *dbx.Query {
|
||||
return d.rdb.NewQuery(s)
|
||||
}
|
||||
|
||||
func (d *dbxBuilder) Select(s ...string) *dbx.SelectQuery {
|
||||
return d.rdb.Select(s...)
|
||||
}
|
||||
|
||||
func (d *dbxBuilder) GeneratePlaceholder(i int) string {
|
||||
return d.rdb.GeneratePlaceholder(i)
|
||||
}
|
||||
|
||||
func (d *dbxBuilder) Quote(s string) string {
|
||||
return d.rdb.Quote(s)
|
||||
}
|
||||
|
||||
func (d *dbxBuilder) QuoteSimpleTableName(s string) string {
|
||||
return d.rdb.QuoteSimpleTableName(s)
|
||||
}
|
||||
|
||||
func (d *dbxBuilder) QuoteSimpleColumnName(s string) string {
|
||||
return d.rdb.QuoteSimpleColumnName(s)
|
||||
}
|
||||
|
||||
func (d *dbxBuilder) QueryBuilder() dbx.QueryBuilder {
|
||||
return d.rdb.QueryBuilder()
|
||||
}
|
||||
|
||||
func (d *dbxBuilder) Transactional(f func(*dbx.Tx) error) (err error) {
|
||||
return d.Builder.(*dbx.DB).Transactional(f)
|
||||
}
|
||||
Reference in New Issue
Block a user