feat: initial implementation of metadata aggregator

- gRPC service with MusicBrainz provider
- PostgreSQL schema with migrations
- Service layer with database-first caching
- Repository pattern for data access
- YAML configuration support
- Research documentation for 17 music metadata projects
This commit is contained in:
Alexander
2026-04-28 16:27:14 +02:00
commit a1f6701bac
163 changed files with 95884 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
package provider
import (
"context"
"github.com/metadata-agregator/internal/domain"
)
type Provider interface {
Name() string
GetArtist(ctx context.Context, id string) (*domain.Artist, error)
SearchArtists(ctx context.Context, query string, limit, offset int) (*domain.SearchResult[domain.Artist], error)
GetAlbum(ctx context.Context, id string) (*domain.Album, error)
GetArtistAlbums(ctx context.Context, artistID string, limit, offset int) (*domain.SearchResult[domain.Album], error)
GetTrack(ctx context.Context, id string) (*domain.Track, error)
GetAlbumTracks(ctx context.Context, albumID string) ([]domain.Track, error)
GetTrackByISRC(ctx context.Context, isrc string) (*domain.Track, error)
GetLabel(ctx context.Context, id string) (*domain.Label, error)
GetWork(ctx context.Context, id string) (*domain.Work, error)
}