59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
package repositories
|
|
|
|
import (
|
|
"go-eve-pi/types"
|
|
|
|
logger "git.site.quack-lab.dev/dave/cylogger"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// CharacterRepository handles character-related database operations
|
|
// Implements CharacterRepositoryInterface
|
|
type CharacterRepository struct {
|
|
*BaseRepository
|
|
}
|
|
|
|
// NewCharacterRepository creates a new character repository
|
|
func NewCharacterRepository(db *gorm.DB) *CharacterRepository {
|
|
return &CharacterRepository{
|
|
BaseRepository: NewBaseRepository(db),
|
|
}
|
|
}
|
|
|
|
// GetCharacterByName retrieves a character by name
|
|
func (r *CharacterRepository) GetCharacterByName(characterName string) (*types.Character, error) {
|
|
logger.Debug("Fetching token for character %s from database", characterName)
|
|
var char types.Character
|
|
err := r.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
|
|
}
|
|
|
|
// GetAllCharacters retrieves all characters from the database
|
|
func (r *CharacterRepository) GetAllCharacters() ([]types.Character, error) {
|
|
logger.Debug("Fetching all characters from database")
|
|
var characters []types.Character
|
|
err := r.db.Find(&characters).Error
|
|
if err != nil {
|
|
logger.Error("Failed to fetch all characters: %v", err)
|
|
return nil, err
|
|
}
|
|
logger.Debug("Found %d characters in database", len(characters))
|
|
return characters, nil
|
|
}
|
|
|
|
// SaveCharacter saves a character to the database
|
|
func (r *CharacterRepository) SaveCharacter(character *types.Character) error {
|
|
logger.Debug("Saving token for character %s to database", character.CharacterName)
|
|
err := r.db.Save(character).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
logger.Debug("Token saved successfully for character %s", character.CharacterName)
|
|
return nil
|
|
}
|