Files

58 lines
1.2 KiB
Go
Raw Permalink Normal View History

package cacher
import (
"fmt"
"sync"
"source.hodakov.me/hdkv/faketunes/internal/application"
"source.hodakov.me/hdkv/faketunes/internal/domains"
"source.hodakov.me/hdkv/faketunes/internal/domains/cacher/models"
)
var (
_ domains.Cacher = new(Cacher)
_ domains.Domain = new(Cacher)
)
type Cacher struct {
app *application.App
transcoder domains.Transcoder
cacheDir string
currentSize int64
maxSize int64
items map[string]*models.CacheItem
2026-02-12 02:28:23 +03:00
itemsMutex sync.RWMutex
stat map[string]*models.CacherStat
2026-02-12 02:28:23 +03:00
statMutex sync.RWMutex
}
func New(app *application.App) *Cacher {
return &Cacher{
app: app,
2026-02-12 02:28:23 +03:00
cacheDir: app.Config().Paths.Destination + "/.cache",
maxSize: app.Config().FakeTunes.CacheSize * 1024 * 1024,
items: make(map[string]*models.CacheItem, 0),
stat: make(map[string]*models.CacherStat, 0),
}
}
func (c *Cacher) ConnectDependencies() error {
transcoder, ok := c.app.RetrieveDomain(domains.TranscoderName).(domains.Transcoder)
if !ok {
return fmt.Errorf(
"%w: %w (%s)", ErrCacher, ErrConnectDependencies,
"transcoder domain interface conversion failed",
)
}
c.transcoder = transcoder
return nil
}
func (c *Cacher) Start() error {
return nil
}