node build fixed

This commit is contained in:
ra_ma
2025-09-20 14:08:38 +01:00
parent c6ebbe069d
commit 3d298fa434
1516 changed files with 535727 additions and 2 deletions

View 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
}