feat: add global proxy config upgrade: upgrade front(angular) to 19 chore: deployment staff 1. Dockerfile: build frontend, backend, and run in nginx base image
54 lines
910 B
Go
54 lines
910 B
Go
package dbs
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path"
|
|
|
|
"nf-repo/internal/interfaces"
|
|
"nf-repo/internal/opt"
|
|
|
|
"github.com/glebarez/sqlite"
|
|
"github.com/loveuer/nf/nft/log"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type tx struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func (t *tx) TX(ctx context.Context) *gorm.DB {
|
|
db := t.db.Session(&gorm.Session{}).WithContext(ctx)
|
|
|
|
if opt.Cfg.Debug {
|
|
db = db.Debug()
|
|
}
|
|
|
|
return db
|
|
}
|
|
|
|
func newTX(db *gorm.DB) interfaces.Database {
|
|
return &tx{db: db}
|
|
}
|
|
|
|
func Must(database interfaces.Database, err error) interfaces.Database {
|
|
if err != nil {
|
|
log.Panic("tx.Must: err = %s", err.Error())
|
|
}
|
|
|
|
if database == nil {
|
|
log.Panic("tx.Must: database is nil")
|
|
}
|
|
|
|
return database
|
|
}
|
|
|
|
func NewSqliteTX(filepath string) (interfaces.Database, error) {
|
|
if err := os.MkdirAll(path.Dir(filepath), 0o755); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
db, err := gorm.Open(sqlite.Open(filepath), &gorm.Config{})
|
|
return newTX(db), err
|
|
}
|