Files
metadata-agregator/internal/repository/repository.go
T
Alexander 2756cc1043 feat: fuzzy search with parallel DB/MusicBrainz execution
- Add pg_trgm fuzzy search to PostgreSQL artist repository
- Add Lucene fuzzy query (~0.7) for MusicBrainz artist search
- Run DB and MusicBrainz searches in parallel goroutines
- Cache MusicBrainz results to DB for accumulation
- Deduplicate results by external ID
- Filter out special purpose artists (type=Other)
- Add SaveAll method for batch artist inserts
- Move database schema to containers repo
2026-05-10 21:13:17 +02:00

34 lines
1.4 KiB
Go

package repository
import (
"context"
"github.com/metadata-agregator/internal/domain"
)
type ArtistRepository interface {
GetByID(ctx context.Context, id string) (*domain.Artist, error)
GetByExternalID(ctx context.Context, source, sourceID string) (*domain.Artist, error)
Search(ctx context.Context, query string, limit, offset int) (*domain.SearchResult[domain.Artist], error)
Save(ctx context.Context, artist *domain.Artist) error
SaveAll(ctx context.Context, artists []domain.Artist) error
}
type AlbumRepository interface {
GetByID(ctx context.Context, id string) (*domain.Album, error)
GetByExternalID(ctx context.Context, source, sourceID string) (*domain.Album, error)
GetByArtistID(ctx context.Context, artistID string, limit, offset int) (*domain.SearchResult[domain.Album], error)
GetAllByArtistID(ctx context.Context, artistID string) ([]domain.Album, error)
Save(ctx context.Context, album *domain.Album) error
SaveAll(ctx context.Context, albums []domain.Album) error
}
type TrackRepository interface {
GetByID(ctx context.Context, id string) (*domain.Track, error)
GetByExternalID(ctx context.Context, source, sourceID string) (*domain.Track, error)
GetByISRC(ctx context.Context, isrc string) (*domain.Track, error)
GetByAlbumID(ctx context.Context, albumID string) ([]domain.Track, error)
Save(ctx context.Context, track *domain.Track) error
SaveAlbumTracks(ctx context.Context, albumID string, tracks []domain.Track) error
}