diff --git a/db.go b/db/db.go similarity index 62% rename from db.go rename to db/db.go index 59b4ae0..fa6de28 100644 --- a/db.go +++ b/db/db.go @@ -1,6 +1,8 @@ -package main +package db import ( + "go-eve-pi/esi" + "go-eve-pi/options" "path/filepath" "gorm.io/driver/sqlite" @@ -12,9 +14,11 @@ import ( type DB interface { DB() *gorm.DB Raw(sql string, args ...any) *gorm.DB - GetCharacterByName(characterName string) (*Character, error) - SaveCharacter(character *Character) error + GetCharacterByName(characterName string) (*esi.Character, error) + SaveCharacter(character *esi.Character) error AutoMigrate(dst ...interface{}) error + GetCacheEntry(urlHash string) (*esi.CacheEntry, error) + SaveCacheEntry(entry *esi.CacheEntry) error } type DBWrapper struct { @@ -31,8 +35,8 @@ func GetDB() (DB, error) { return db, nil } - logger.Debug("Creating new database connection to %s", options.DBPath) - dbFile := filepath.Join(options.DBPath) + 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, @@ -55,9 +59,9 @@ func (db *DBWrapper) DB() *gorm.DB { return db.db } -func (db *DBWrapper) GetCharacterByName(characterName string) (*Character, error) { +func (db *DBWrapper) GetCharacterByName(characterName string) (*esi.Character, error) { logger.Debug("Fetching token for character %s from database", characterName) - var char Character + var char esi.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) @@ -67,7 +71,7 @@ func (db *DBWrapper) GetCharacterByName(characterName string) (*Character, error return &char, nil } -func (db *DBWrapper) SaveCharacter(character *Character) error { +func (db *DBWrapper) SaveCharacter(character *esi.Character) error { logger.Debug("Saving token for character %s to database", character.CharacterName) err := db.db.Save(character).Error if err != nil { @@ -86,3 +90,25 @@ func (db *DBWrapper) AutoMigrate(dst ...interface{}) error { 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 +} diff --git a/esi_sso.go b/esi/sso.go similarity index 99% rename from esi_sso.go rename to esi/sso.go index c0c8d86..610eab6 100644 --- a/esi_sso.go +++ b/esi/sso.go @@ -1,4 +1,4 @@ -package main +package esi import ( "context" diff --git a/options.go b/options/options.go similarity index 98% rename from options.go rename to options/options.go index 7ef516e..33d2e7b 100644 --- a/options.go +++ b/options/options.go @@ -1,4 +1,4 @@ -package main +package options import ( "fmt" @@ -10,11 +10,11 @@ import ( "github.com/joho/godotenv" ) -var options Options +var GlobalOptions Options func init() { var err error - options, err = LoadOptions() + GlobalOptions, err = LoadOptions() if err != nil { logger.Error("Failed to load options %v", err) return