node build fixed
This commit is contained in:
102
seanime-2.9.10/internal/database/db/db.go
Normal file
102
seanime-2.9.10/internal/database/db/db.go
Normal file
@@ -0,0 +1,102 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"seanime/internal/database/models"
|
||||
"time"
|
||||
|
||||
"github.com/glebarez/sqlite"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/samber/mo"
|
||||
"gorm.io/gorm"
|
||||
gormlogger "gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
type Database struct {
|
||||
gormdb *gorm.DB
|
||||
Logger *zerolog.Logger
|
||||
CurrMediaFillers mo.Option[map[int]*MediaFillerItem]
|
||||
}
|
||||
|
||||
func (db *Database) Gorm() *gorm.DB {
|
||||
return db.gormdb
|
||||
}
|
||||
|
||||
func NewDatabase(appDataDir, dbName string, logger *zerolog.Logger) (*Database, error) {
|
||||
|
||||
// Set the SQLite database path
|
||||
var sqlitePath string
|
||||
if os.Getenv("TEST_ENV") == "true" {
|
||||
sqlitePath = ":memory:"
|
||||
} else {
|
||||
sqlitePath = filepath.Join(appDataDir, dbName+".db")
|
||||
}
|
||||
|
||||
// Connect to the SQLite database
|
||||
db, err := gorm.Open(sqlite.Open(sqlitePath), &gorm.Config{
|
||||
Logger: gormlogger.New(
|
||||
log.New(os.Stdout, "\r\n", log.LstdFlags),
|
||||
gormlogger.Config{
|
||||
SlowThreshold: time.Second,
|
||||
LogLevel: gormlogger.Error,
|
||||
IgnoreRecordNotFoundError: true,
|
||||
ParameterizedQueries: false,
|
||||
Colorful: true,
|
||||
},
|
||||
),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Migrate tables
|
||||
err = migrateTables(db)
|
||||
if err != nil {
|
||||
logger.Fatal().Err(err).Msg("db: Failed to perform auto migration")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
logger.Info().Str("name", fmt.Sprintf("%s.db", dbName)).Msg("db: Database instantiated")
|
||||
|
||||
return &Database{
|
||||
gormdb: db,
|
||||
Logger: logger,
|
||||
CurrMediaFillers: mo.None[map[int]*MediaFillerItem](),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// MigrateTables performs auto migration on the database
|
||||
func migrateTables(db *gorm.DB) error {
|
||||
err := db.AutoMigrate(
|
||||
&models.LocalFiles{},
|
||||
&models.Settings{},
|
||||
&models.Account{},
|
||||
&models.Mal{},
|
||||
&models.ScanSummary{},
|
||||
&models.AutoDownloaderRule{},
|
||||
&models.AutoDownloaderItem{},
|
||||
&models.SilencedMediaEntry{},
|
||||
&models.Theme{},
|
||||
&models.PlaylistEntry{},
|
||||
&models.ChapterDownloadQueueItem{},
|
||||
&models.TorrentstreamSettings{},
|
||||
&models.TorrentstreamHistory{},
|
||||
&models.MediastreamSettings{},
|
||||
&models.MediaFiller{},
|
||||
&models.MangaMapping{},
|
||||
&models.OnlinestreamMapping{},
|
||||
&models.DebridSettings{},
|
||||
&models.DebridTorrentItem{},
|
||||
&models.PluginData{},
|
||||
//&models.MangaChapterContainer{},
|
||||
)
|
||||
if err != nil {
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user