Remove old db
This commit is contained in:
115
db/db.go
115
db/db.go
@@ -1,115 +0,0 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"go-eve-pi/esi"
|
||||
"go-eve-pi/options"
|
||||
"go-eve-pi/types"
|
||||
"path/filepath"
|
||||
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
|
||||
logger "git.site.quack-lab.dev/dave/cylogger"
|
||||
)
|
||||
|
||||
type DB interface {
|
||||
DB() *gorm.DB
|
||||
Raw(sql string, args ...any) *gorm.DB
|
||||
GetCharacterByName(characterName string) (*types.Character, error)
|
||||
SaveCharacter(character *types.Character) error
|
||||
AutoMigrate(dst ...interface{}) error
|
||||
GetCacheEntry(urlHash string) (*esi.CacheEntry, error)
|
||||
SaveCacheEntry(entry *esi.CacheEntry) error
|
||||
}
|
||||
|
||||
type DBWrapper struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
var db *DBWrapper
|
||||
|
||||
func GetDB() (DB, error) {
|
||||
var err error
|
||||
|
||||
if db != nil {
|
||||
logger.Debug("Returning existing database connection")
|
||||
return db, nil
|
||||
}
|
||||
|
||||
logger.Debug("Creating new database connection to %s", options.GlobalOptions.DBPath)
|
||||
dbFile := filepath.Join(options.GlobalOptions.DBPath)
|
||||
db, err := gorm.Open(sqlite.Open(dbFile), &gorm.Config{
|
||||
// SkipDefaultTransaction: true,
|
||||
PrepareStmt: true,
|
||||
// Logger: gormlogger.Default.LogMode(gormlogger.Silent),
|
||||
})
|
||||
if err != nil {
|
||||
logger.Error("Failed to open database: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
logger.Info("Database connection established successfully")
|
||||
return &DBWrapper{db: db}, nil
|
||||
}
|
||||
|
||||
func (db *DBWrapper) Raw(sql string, args ...any) *gorm.DB {
|
||||
return db.db.Raw(sql, args...)
|
||||
}
|
||||
|
||||
func (db *DBWrapper) DB() *gorm.DB {
|
||||
return db.db
|
||||
}
|
||||
|
||||
func (db *DBWrapper) GetCharacterByName(characterName string) (*types.Character, error) {
|
||||
logger.Debug("Fetching token for character %s from database", characterName)
|
||||
var char types.Character
|
||||
err := db.db.Where("character_name = ?", characterName).First(&char).Error
|
||||
if err != nil {
|
||||
logger.Debug("No token found for character %s: %v", characterName, err)
|
||||
return nil, err
|
||||
}
|
||||
logger.Debug("Token found for character %s, expires at %v", characterName, char.ExpiresAt)
|
||||
return &char, nil
|
||||
}
|
||||
|
||||
func (db *DBWrapper) SaveCharacter(character *types.Character) error {
|
||||
logger.Debug("Saving token for character %s to database", character.CharacterName)
|
||||
err := db.db.Save(character).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Debug("Token saved successfully for character %s", character.CharacterName)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *DBWrapper) AutoMigrate(dst ...interface{}) error {
|
||||
logger.Debug("Running database auto-migration")
|
||||
err := db.db.AutoMigrate(dst...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Debug("Database auto-migration completed successfully")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *DBWrapper) GetCacheEntry(urlHash string) (*esi.CacheEntry, error) {
|
||||
logger.Debug("Fetching cache entry for URL hash: %s", urlHash)
|
||||
var entry esi.CacheEntry
|
||||
err := db.db.Where("url_hash = ?", urlHash).First(&entry).Error
|
||||
if err != nil {
|
||||
logger.Debug("No cache entry found for URL hash: %s", urlHash)
|
||||
return nil, err
|
||||
}
|
||||
logger.Debug("Cache entry found for URL hash: %s, cached at: %v", urlHash, entry.CachedAt)
|
||||
return &entry, nil
|
||||
}
|
||||
|
||||
func (db *DBWrapper) SaveCacheEntry(entry *esi.CacheEntry) error {
|
||||
logger.Debug("Saving cache entry for URL hash: %s", entry.URLHash)
|
||||
err := db.db.Save(entry).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Debug("Cache entry saved successfully for URL hash: %s", entry.URLHash)
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user