Files
go-eve-pi/repositories/character.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
}