60 lines
1.1 KiB
Go
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"))
|
|
}
|