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 }