Refactor db and options to separate packages
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package main
|
package db
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"go-eve-pi/esi"
|
||||||
|
"go-eve-pi/options"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"gorm.io/driver/sqlite"
|
"gorm.io/driver/sqlite"
|
||||||
@@ -12,9 +14,11 @@ import (
|
|||||||
type DB interface {
|
type DB interface {
|
||||||
DB() *gorm.DB
|
DB() *gorm.DB
|
||||||
Raw(sql string, args ...any) *gorm.DB
|
Raw(sql string, args ...any) *gorm.DB
|
||||||
GetCharacterByName(characterName string) (*Character, error)
|
GetCharacterByName(characterName string) (*esi.Character, error)
|
||||||
SaveCharacter(character *Character) error
|
SaveCharacter(character *esi.Character) error
|
||||||
AutoMigrate(dst ...interface{}) error
|
AutoMigrate(dst ...interface{}) error
|
||||||
|
GetCacheEntry(urlHash string) (*esi.CacheEntry, error)
|
||||||
|
SaveCacheEntry(entry *esi.CacheEntry) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type DBWrapper struct {
|
type DBWrapper struct {
|
||||||
@@ -31,8 +35,8 @@ func GetDB() (DB, error) {
|
|||||||
return db, nil
|
return db, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Debug("Creating new database connection to %s", options.DBPath)
|
logger.Debug("Creating new database connection to %s", options.GlobalOptions.DBPath)
|
||||||
dbFile := filepath.Join(options.DBPath)
|
dbFile := filepath.Join(options.GlobalOptions.DBPath)
|
||||||
db, err := gorm.Open(sqlite.Open(dbFile), &gorm.Config{
|
db, err := gorm.Open(sqlite.Open(dbFile), &gorm.Config{
|
||||||
// SkipDefaultTransaction: true,
|
// SkipDefaultTransaction: true,
|
||||||
PrepareStmt: true,
|
PrepareStmt: true,
|
||||||
@@ -55,9 +59,9 @@ func (db *DBWrapper) DB() *gorm.DB {
|
|||||||
return db.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)
|
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
|
err := db.db.Where("character_name = ?", characterName).First(&char).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Debug("No token found for character %s: %v", characterName, err)
|
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
|
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)
|
logger.Debug("Saving token for character %s to database", character.CharacterName)
|
||||||
err := db.db.Save(character).Error
|
err := db.db.Save(character).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -86,3 +90,25 @@ func (db *DBWrapper) AutoMigrate(dst ...interface{}) error {
|
|||||||
logger.Debug("Database auto-migration completed successfully")
|
logger.Debug("Database auto-migration completed successfully")
|
||||||
return nil
|
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
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package main
|
package esi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package main
|
package options
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -10,11 +10,11 @@ import (
|
|||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
var options Options
|
var GlobalOptions Options
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
var err error
|
var err error
|
||||||
options, err = LoadOptions()
|
GlobalOptions, err = LoadOptions()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Failed to load options %v", err)
|
logger.Error("Failed to load options %v", err)
|
||||||
return
|
return
|
||||||
Reference in New Issue
Block a user