60 lines
1.1 KiB
Go

package development
import (
"database/sql"
"git.markbailey.dev/cervers/ptpp/lib/logger"
"git.markbailey.dev/cervers/ptpp/lib/repository"
"git.markbailey.dev/cervers/ptpp/models/sqlite"
_ "github.com/mattn/go-sqlite3"
"sync"
)
var (
tDB *sql.DB
tDBLock = &sync.Mutex{}
TestQueries *sqlite.Queries
)
type DB struct {
logger logger.ILogger
Repository repository.IRepository
}
func NewTestDB(l logger.ILogger) (*DB, error) {
if tDB == nil {
tDBLock.Lock()
defer tDBLock.Unlock()
db, err := sql.Open("sqlite3", "data/database.db")
if err != nil {
l.Error(l.Wrap(err, "Error opening database connection"))
return nil, err
}
tDB = db
}
if TestQueries == nil {
TestQueries = sqlite.New(tDB)
}
return &DB{
logger: l,
Repository: &Repo{},
}, nil
}
func (d DB) Repo() repository.IRepository {
return d.Repository
}
func (d DB) Info(msg string) {
d.logger.Info(msg)
}
func (d DB) Warn(msg string) {
d.logger.Warn(msg)
}
func (d DB) Error(err error) {
d.logger.Error(d.logger.Wrap(err, "Error in SQLite3 database"))
}