2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 06:47:20 +08:00
Files
panel/internal/bootstrap/db.go
2024-10-12 02:52:23 +08:00

46 lines
1.1 KiB
Go

package bootstrap
import (
"log"
"path/filepath"
"github.com/glebarez/sqlite"
"github.com/go-gormigrate/gormigrate/v2"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"moul.io/zapgorm2"
"github.com/TheTNB/panel/internal/app"
"github.com/TheTNB/panel/internal/migration"
)
func initOrm() {
logLevel := logger.Error
if app.Conf.Bool("database.debug") {
logLevel = logger.Info
}
zapLogger := zapgorm2.New(app.Logger)
zapLogger.LogMode(logLevel)
zapLogger.SetAsDefault()
db, err := gorm.Open(sqlite.Open(filepath.Join(app.Root, "panel/storage/panel.db")), &gorm.Config{
Logger: zapLogger,
SkipDefaultTransaction: true,
DisableForeignKeyConstraintWhenMigrating: true,
})
if err != nil {
log.Fatalf("failed to connect database: %v", err)
}
app.Orm = db
}
func runMigrate() {
migrator := gormigrate.New(app.Orm, &gormigrate.Options{
UseTransaction: true, // Note: MySQL not support DDL transaction
ValidateUnknownMigrations: true,
}, migration.Migrations)
if err := migrator.Migrate(); err != nil {
log.Fatalf("failed to migrate database: %v", err)
}
}