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:
@@ -0,0 +1,84 @@
|
||||
package domain
|
||||
|
||||
import "time"
|
||||
|
||||
type Artist struct {
|
||||
ID string
|
||||
Name string
|
||||
SortName string
|
||||
Type string
|
||||
Country string
|
||||
FormedDate *time.Time
|
||||
DisbandedDate *time.Time
|
||||
Description string
|
||||
ImageURL string
|
||||
Genres []Genre
|
||||
ExternalIDs []ExternalID
|
||||
}
|
||||
|
||||
type Album struct {
|
||||
ID string
|
||||
Title string
|
||||
Type string
|
||||
ReleaseDate *time.Time
|
||||
UPC string
|
||||
TotalTracks int
|
||||
TotalDiscs int
|
||||
CoverURL string
|
||||
Artists []ArtistCredit
|
||||
Label *Label
|
||||
Genres []Genre
|
||||
ExternalIDs []ExternalID
|
||||
}
|
||||
|
||||
type Track struct {
|
||||
ID string
|
||||
Title string
|
||||
DurationMs int
|
||||
ISRC string
|
||||
Explicit bool
|
||||
DiscNumber int
|
||||
TrackNumber int
|
||||
Artists []ArtistCredit
|
||||
Work *Work
|
||||
ExternalIDs []ExternalID
|
||||
}
|
||||
|
||||
type Work struct {
|
||||
ID string
|
||||
Title string
|
||||
Type string
|
||||
Language string
|
||||
Composers []ArtistCredit
|
||||
}
|
||||
|
||||
type Label struct {
|
||||
ID string
|
||||
Name string
|
||||
Country string
|
||||
}
|
||||
|
||||
type Genre struct {
|
||||
ID string
|
||||
Name string
|
||||
}
|
||||
|
||||
type ArtistCredit struct {
|
||||
Artist Artist
|
||||
Role string
|
||||
Position int
|
||||
JoinPhrase string
|
||||
}
|
||||
|
||||
type ExternalID struct {
|
||||
Source string
|
||||
SourceID string
|
||||
URL string
|
||||
}
|
||||
|
||||
type SearchResult[T any] struct {
|
||||
Items []T
|
||||
Total int
|
||||
Limit int
|
||||
Offset int
|
||||
}
|
||||
Reference in New Issue
Block a user