mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 06:47:20 +08:00
32 lines
1006 B
Go
32 lines
1006 B
Go
package bootstrap
|
|
|
|
import (
|
|
"log/slog"
|
|
"path/filepath"
|
|
|
|
"github.com/go-gormigrate/gormigrate/v2"
|
|
"github.com/knadh/koanf/v2"
|
|
_ "github.com/ncruces/go-sqlite3/embed"
|
|
"github.com/ncruces/go-sqlite3/gormlite"
|
|
sloggorm "github.com/orandin/slog-gorm"
|
|
"gorm.io/gorm"
|
|
|
|
"github.com/tnb-labs/panel/internal/app"
|
|
"github.com/tnb-labs/panel/internal/migration"
|
|
)
|
|
|
|
func NewDB(conf *koanf.Koanf, log *slog.Logger) (*gorm.DB, error) {
|
|
// You can use any other database, like MySQL or PostgreSQL.
|
|
return gorm.Open(gormlite.Open(filepath.Join(app.Root, "panel/storage/app.db?_txlock=immediate")), &gorm.Config{
|
|
Logger: sloggorm.New(sloggorm.WithHandler(log.Handler())),
|
|
SkipDefaultTransaction: true,
|
|
DisableForeignKeyConstraintWhenMigrating: true,
|
|
})
|
|
}
|
|
|
|
func NewMigrate(db *gorm.DB) *gormigrate.Gormigrate {
|
|
return gormigrate.New(db, &gormigrate.Options{
|
|
UseTransaction: true, // Note: MySQL not support DDL transaction
|
|
}, migration.Migrations)
|
|
}
|