Files
go-eve-pi/repositories/cache.go
2025-10-11 10:51:52 +02:00

49 lines
1.3 KiB
Go

package repositories
import (
"fmt"
"go-eve-pi/types"
logger "git.site.quack-lab.dev/dave/cylogger"
"gorm.io/gorm"
)
// CacheRepository handles cache-related database operations
// Implements CacheRepositoryInterface
type CacheRepository struct {
*BaseRepository
}
// NewCacheRepository creates a new cache repository
func NewCacheRepository(db *gorm.DB) *CacheRepository {
return &CacheRepository{
BaseRepository: NewBaseRepository(db),
}
}
// GetCacheEntry retrieves a cache entry by URL hash
func (r *CacheRepository) GetCacheEntry(hash string) (*types.CacheEntry, error) {
funclog := logger.Default.WithPrefix("CacheRepository.GetCacheEntry").WithPrefix(fmt.Sprintf("hash=%s", hash))
funclog.Info("Starting")
var entry types.CacheEntry
err := r.db.Where("hash = ?", hash).First(&entry).Error
if err != nil {
funclog.Debug("No cache entry found: %v", err)
return nil, err
}
funclog.Debug("Cache entry found")
return &entry, nil
}
// SaveCacheEntry saves a cache entry to the database
func (r *CacheRepository) SaveCacheEntry(entry *types.CacheEntry) error {
funclog := logger.Default.WithPrefix("CacheRepository.SaveCacheEntry").WithPrefix(fmt.Sprintf("hash=%s", entry.Hash))
funclog.Info("Starting")
err := r.db.Save(entry).Error
if err != nil {
return err
}
funclog.Debug("Cache entry saved successfully")
return nil
}