node build fixed
This commit is contained in:
97
seanime-2.9.10/internal/database/db_bridge/localfiles.go
Normal file
97
seanime-2.9.10/internal/database/db_bridge/localfiles.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package db_bridge
|
||||
|
||||
import (
|
||||
"github.com/goccy/go-json"
|
||||
"github.com/samber/mo"
|
||||
"seanime/internal/database/db"
|
||||
"seanime/internal/database/models"
|
||||
"seanime/internal/library/anime"
|
||||
)
|
||||
|
||||
var CurrLocalFilesDbId uint
|
||||
var CurrLocalFiles mo.Option[[]*anime.LocalFile]
|
||||
|
||||
// GetLocalFiles will return the latest local files and the id of the entry.
|
||||
func GetLocalFiles(db *db.Database) ([]*anime.LocalFile, uint, error) {
|
||||
|
||||
if CurrLocalFiles.IsPresent() {
|
||||
return CurrLocalFiles.MustGet(), CurrLocalFilesDbId, nil
|
||||
}
|
||||
|
||||
// Get the latest entry
|
||||
var res models.LocalFiles
|
||||
err := db.Gorm().Last(&res).Error
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
// Unmarshal the local files
|
||||
lfsBytes := res.Value
|
||||
var lfs []*anime.LocalFile
|
||||
if err := json.Unmarshal(lfsBytes, &lfs); err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
db.Logger.Debug().Msg("db: Local files retrieved")
|
||||
|
||||
CurrLocalFiles = mo.Some(lfs)
|
||||
CurrLocalFilesDbId = res.ID
|
||||
|
||||
return lfs, res.ID, nil
|
||||
}
|
||||
|
||||
// SaveLocalFiles will save the local files in the database at the given id.
|
||||
func SaveLocalFiles(db *db.Database, lfsId uint, lfs []*anime.LocalFile) ([]*anime.LocalFile, error) {
|
||||
// Marshal the local files
|
||||
marshaledLfs, err := json.Marshal(lfs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Save the local files
|
||||
ret, err := db.UpsertLocalFiles(&models.LocalFiles{
|
||||
BaseModel: models.BaseModel{
|
||||
ID: lfsId,
|
||||
},
|
||||
Value: marshaledLfs,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Unmarshal the saved local files
|
||||
var retLfs []*anime.LocalFile
|
||||
if err := json.Unmarshal(ret.Value, &retLfs); err != nil {
|
||||
return lfs, nil
|
||||
}
|
||||
|
||||
CurrLocalFiles = mo.Some(retLfs)
|
||||
CurrLocalFilesDbId = ret.ID
|
||||
|
||||
return retLfs, nil
|
||||
}
|
||||
|
||||
// InsertLocalFiles will insert the local files in the database at a new entry.
|
||||
func InsertLocalFiles(db *db.Database, lfs []*anime.LocalFile) ([]*anime.LocalFile, error) {
|
||||
|
||||
// Marshal the local files
|
||||
bytes, err := json.Marshal(lfs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Save the local files to the database
|
||||
ret, err := db.InsertLocalFiles(&models.LocalFiles{
|
||||
Value: bytes,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
CurrLocalFiles = mo.Some(lfs)
|
||||
CurrLocalFilesDbId = ret.ID
|
||||
|
||||
return lfs, nil
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user