kiraku/internal/models/models.go

120 lines
2.4 KiB
Go

package models
import (
"time"
)
//#region Objects
type Role struct {
ID string `json:"id"`
Name string `json:"name"`
}
type PersonCredit struct {
Track TrackBrief `json:"track"`
Role Role `json:"role"`
}
type TrackCredit struct {
Person PersonBrief `json:"person"`
Role Role `json:"role"`
}
type PersonBrief struct {
ID string `json:"id"`
Name string `json:"name"`
SortName string `json:"sortName"`
}
type Person struct {
PersonBrief
Birthdate string `json:"birthdate"`
Deathdate string `json:"deathdate"`
Credits []PersonCredit `json:"credits"`
Info string `json:"info"`
}
type ArtistBrief struct {
ID string `json:"id"`
Name string `json:"name"`
}
type Artist struct {
ArtistBrief
Tracks []TrackBrief `json:"tracks"`
Info string `json:"info"`
}
type TrackBrief struct {
ID string `json:"id"`
Name string `json:"name"`
Artists []ArtistBrief `json:"artists"`
Duration float32 `json:"duration"`
ReleaseDate string `json:"release_date"`
AcquireDatetime time.Time `json:"acquire_datetime"`
ISRC string `json:"isrc"`
}
type Track struct {
TrackBrief
Credits []TrackCredit `json:"credits"`
Lyrics string `json:"lyrics"`
Info string `json:"info"`
}
type Alias struct {
ID string `json:"id"`
TrackID string `json:"track_id"`
Name string `json:"name"`
Artist string `json:"artist"`
}
type Kiroku struct {
Alias Alias `json:"alias"`
Datetime time.Time `json:"datetime"`
}
//#endregion Objects
//#region Sets
type Pagination struct {
Total int `json:"total"`
Offset int `json:"offset"`
Limit int `json:"limit"`
Count int `json:"count"`
}
type Persons struct {
Pagination Pagination `json:"pagination"`
Persons []PersonBrief `json:"persons"`
}
type Roles struct {
Pagination Pagination `json:"pagination"`
Roles []Role `json:"roles"`
}
type Artists struct {
Pagination Pagination `json:"pagination"`
Artists []ArtistBrief `json:"artists"`
}
type Tracks struct {
Pagination Pagination `json:"pagination"`
Tracks []TrackBrief `json:"tracks"`
}
type Aliases struct {
Pagination Pagination `json:"pagination"`
Aliases []Alias `json:"aliases"`
}
type Kirokus struct {
Pagination Pagination `json:"pagination"`
Kirokus []Kiroku `json:"kirokus"`
}
//#endregion Sets