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 }