diff --git a/db/db.go b/db/db.go deleted file mode 100644 index 2cb70ae..0000000 --- a/db/db.go +++ /dev/null @@ -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 -}