mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-07 21:48:18 -08:00
chore: initial public commit
This commit is contained in:
commit
fc9054b78c
250 changed files with 32809 additions and 0 deletions
462
internal/repository/release.sql.go
Normal file
462
internal/repository/release.sql.go
Normal file
|
|
@ -0,0 +1,462 @@
|
|||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.29.0
|
||||
// source: release.sql
|
||||
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
const associateArtistToRelease = `-- name: AssociateArtistToRelease :exec
|
||||
INSERT INTO artist_releases (artist_id, release_id)
|
||||
VALUES ($1, $2)
|
||||
ON CONFLICT DO NOTHING
|
||||
`
|
||||
|
||||
type AssociateArtistToReleaseParams struct {
|
||||
ArtistID int32
|
||||
ReleaseID int32
|
||||
}
|
||||
|
||||
func (q *Queries) AssociateArtistToRelease(ctx context.Context, arg AssociateArtistToReleaseParams) error {
|
||||
_, err := q.db.Exec(ctx, associateArtistToRelease, arg.ArtistID, arg.ReleaseID)
|
||||
return err
|
||||
}
|
||||
|
||||
const countReleasesFromArtist = `-- name: CountReleasesFromArtist :one
|
||||
SELECT COUNT(*)
|
||||
FROM releases r
|
||||
JOIN artist_releases ar ON r.id = ar.release_id
|
||||
WHERE ar.artist_id = $1
|
||||
`
|
||||
|
||||
func (q *Queries) CountReleasesFromArtist(ctx context.Context, artistID int32) (int64, error) {
|
||||
row := q.db.QueryRow(ctx, countReleasesFromArtist, artistID)
|
||||
var count int64
|
||||
err := row.Scan(&count)
|
||||
return count, err
|
||||
}
|
||||
|
||||
const countTopReleases = `-- name: CountTopReleases :one
|
||||
SELECT COUNT(DISTINCT r.id) AS total_count
|
||||
FROM listens l
|
||||
JOIN tracks t ON l.track_id = t.id
|
||||
JOIN releases r ON t.release_id = r.id
|
||||
WHERE l.listened_at BETWEEN $1 AND $2
|
||||
`
|
||||
|
||||
type CountTopReleasesParams struct {
|
||||
ListenedAt time.Time
|
||||
ListenedAt_2 time.Time
|
||||
}
|
||||
|
||||
func (q *Queries) CountTopReleases(ctx context.Context, arg CountTopReleasesParams) (int64, error) {
|
||||
row := q.db.QueryRow(ctx, countTopReleases, arg.ListenedAt, arg.ListenedAt_2)
|
||||
var total_count int64
|
||||
err := row.Scan(&total_count)
|
||||
return total_count, err
|
||||
}
|
||||
|
||||
const deleteRelease = `-- name: DeleteRelease :exec
|
||||
DELETE FROM releases WHERE id = $1
|
||||
`
|
||||
|
||||
func (q *Queries) DeleteRelease(ctx context.Context, id int32) error {
|
||||
_, err := q.db.Exec(ctx, deleteRelease, id)
|
||||
return err
|
||||
}
|
||||
|
||||
const deleteReleasesFromArtist = `-- name: DeleteReleasesFromArtist :exec
|
||||
DELETE FROM releases r
|
||||
USING artist_releases ar
|
||||
WHERE ar.release_id = r.id
|
||||
AND ar.artist_id = $1
|
||||
`
|
||||
|
||||
func (q *Queries) DeleteReleasesFromArtist(ctx context.Context, artistID int32) error {
|
||||
_, err := q.db.Exec(ctx, deleteReleasesFromArtist, artistID)
|
||||
return err
|
||||
}
|
||||
|
||||
const getRelease = `-- name: GetRelease :one
|
||||
SELECT id, musicbrainz_id, image, various_artists, image_source, title FROM releases_with_title
|
||||
WHERE id = $1 LIMIT 1
|
||||
`
|
||||
|
||||
func (q *Queries) GetRelease(ctx context.Context, id int32) (ReleasesWithTitle, error) {
|
||||
row := q.db.QueryRow(ctx, getRelease, id)
|
||||
var i ReleasesWithTitle
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
&i.Title,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getReleaseByArtistAndTitle = `-- name: GetReleaseByArtistAndTitle :one
|
||||
SELECT r.id, r.musicbrainz_id, r.image, r.various_artists, r.image_source, r.title
|
||||
FROM releases_with_title r
|
||||
JOIN artist_releases ar ON r.id = ar.release_id
|
||||
WHERE r.title = $1 AND ar.artist_id = $2
|
||||
LIMIT 1
|
||||
`
|
||||
|
||||
type GetReleaseByArtistAndTitleParams struct {
|
||||
Title string
|
||||
ArtistID int32
|
||||
}
|
||||
|
||||
func (q *Queries) GetReleaseByArtistAndTitle(ctx context.Context, arg GetReleaseByArtistAndTitleParams) (ReleasesWithTitle, error) {
|
||||
row := q.db.QueryRow(ctx, getReleaseByArtistAndTitle, arg.Title, arg.ArtistID)
|
||||
var i ReleasesWithTitle
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
&i.Title,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getReleaseByArtistAndTitles = `-- name: GetReleaseByArtistAndTitles :one
|
||||
SELECT r.id, r.musicbrainz_id, r.image, r.various_artists, r.image_source, r.title
|
||||
FROM releases_with_title r
|
||||
JOIN artist_releases ar ON r.id = ar.release_id
|
||||
WHERE r.title = ANY ($1::TEXT[]) AND ar.artist_id = $2
|
||||
LIMIT 1
|
||||
`
|
||||
|
||||
type GetReleaseByArtistAndTitlesParams struct {
|
||||
Column1 []string
|
||||
ArtistID int32
|
||||
}
|
||||
|
||||
func (q *Queries) GetReleaseByArtistAndTitles(ctx context.Context, arg GetReleaseByArtistAndTitlesParams) (ReleasesWithTitle, error) {
|
||||
row := q.db.QueryRow(ctx, getReleaseByArtistAndTitles, arg.Column1, arg.ArtistID)
|
||||
var i ReleasesWithTitle
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
&i.Title,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getReleaseByImageID = `-- name: GetReleaseByImageID :one
|
||||
SELECT id, musicbrainz_id, image, various_artists, image_source FROM releases
|
||||
WHERE image = $1 LIMIT 1
|
||||
`
|
||||
|
||||
func (q *Queries) GetReleaseByImageID(ctx context.Context, image *uuid.UUID) (Release, error) {
|
||||
row := q.db.QueryRow(ctx, getReleaseByImageID, image)
|
||||
var i Release
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getReleaseByMbzID = `-- name: GetReleaseByMbzID :one
|
||||
SELECT id, musicbrainz_id, image, various_artists, image_source, title FROM releases_with_title
|
||||
WHERE musicbrainz_id = $1 LIMIT 1
|
||||
`
|
||||
|
||||
func (q *Queries) GetReleaseByMbzID(ctx context.Context, musicbrainzID *uuid.UUID) (ReleasesWithTitle, error) {
|
||||
row := q.db.QueryRow(ctx, getReleaseByMbzID, musicbrainzID)
|
||||
var i ReleasesWithTitle
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
&i.Title,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getReleasesWithoutImages = `-- name: GetReleasesWithoutImages :many
|
||||
SELECT
|
||||
r.id, r.musicbrainz_id, r.image, r.various_artists, r.image_source, r.title,
|
||||
(
|
||||
SELECT json_agg(DISTINCT jsonb_build_object('id', a.id, 'name', a.name))
|
||||
FROM artists_with_name a
|
||||
JOIN artist_releases ar ON a.id = ar.artist_id
|
||||
WHERE ar.release_id = r.id
|
||||
) AS artists
|
||||
FROM releases_with_title r
|
||||
WHERE r.image IS NULL
|
||||
AND r.id > $2
|
||||
ORDER BY r.id ASC
|
||||
LIMIT $1
|
||||
`
|
||||
|
||||
type GetReleasesWithoutImagesParams struct {
|
||||
Limit int32
|
||||
ID int32
|
||||
}
|
||||
|
||||
type GetReleasesWithoutImagesRow struct {
|
||||
ID int32
|
||||
MusicBrainzID *uuid.UUID
|
||||
Image *uuid.UUID
|
||||
VariousArtists bool
|
||||
ImageSource pgtype.Text
|
||||
Title string
|
||||
Artists []byte
|
||||
}
|
||||
|
||||
func (q *Queries) GetReleasesWithoutImages(ctx context.Context, arg GetReleasesWithoutImagesParams) ([]GetReleasesWithoutImagesRow, error) {
|
||||
rows, err := q.db.Query(ctx, getReleasesWithoutImages, arg.Limit, arg.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []GetReleasesWithoutImagesRow
|
||||
for rows.Next() {
|
||||
var i GetReleasesWithoutImagesRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
&i.Title,
|
||||
&i.Artists,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const getTopReleasesFromArtist = `-- name: GetTopReleasesFromArtist :many
|
||||
SELECT
|
||||
r.id, r.musicbrainz_id, r.image, r.various_artists, r.image_source, r.title,
|
||||
COUNT(*) AS listen_count,
|
||||
(
|
||||
SELECT json_agg(DISTINCT jsonb_build_object('id', a.id, 'name', a.name))
|
||||
FROM artists_with_name a
|
||||
JOIN artist_releases ar ON ar.artist_id = a.id
|
||||
WHERE ar.release_id = r.id
|
||||
) AS artists
|
||||
FROM listens l
|
||||
JOIN tracks t ON l.track_id = t.id
|
||||
JOIN releases_with_title r ON t.release_id = r.id
|
||||
JOIN artist_releases ar ON r.id = ar.release_id
|
||||
WHERE ar.artist_id = $5
|
||||
AND l.listened_at BETWEEN $1 AND $2
|
||||
GROUP BY r.id, r.title, r.musicbrainz_id, r.various_artists, r.image, r.image_source
|
||||
ORDER BY listen_count DESC
|
||||
LIMIT $3 OFFSET $4
|
||||
`
|
||||
|
||||
type GetTopReleasesFromArtistParams struct {
|
||||
ListenedAt time.Time
|
||||
ListenedAt_2 time.Time
|
||||
Limit int32
|
||||
Offset int32
|
||||
ArtistID int32
|
||||
}
|
||||
|
||||
type GetTopReleasesFromArtistRow struct {
|
||||
ID int32
|
||||
MusicBrainzID *uuid.UUID
|
||||
Image *uuid.UUID
|
||||
VariousArtists bool
|
||||
ImageSource pgtype.Text
|
||||
Title string
|
||||
ListenCount int64
|
||||
Artists []byte
|
||||
}
|
||||
|
||||
func (q *Queries) GetTopReleasesFromArtist(ctx context.Context, arg GetTopReleasesFromArtistParams) ([]GetTopReleasesFromArtistRow, error) {
|
||||
rows, err := q.db.Query(ctx, getTopReleasesFromArtist,
|
||||
arg.ListenedAt,
|
||||
arg.ListenedAt_2,
|
||||
arg.Limit,
|
||||
arg.Offset,
|
||||
arg.ArtistID,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []GetTopReleasesFromArtistRow
|
||||
for rows.Next() {
|
||||
var i GetTopReleasesFromArtistRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
&i.Title,
|
||||
&i.ListenCount,
|
||||
&i.Artists,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const getTopReleasesPaginated = `-- name: GetTopReleasesPaginated :many
|
||||
SELECT
|
||||
r.id, r.musicbrainz_id, r.image, r.various_artists, r.image_source, r.title,
|
||||
COUNT(*) AS listen_count,
|
||||
(
|
||||
SELECT json_agg(DISTINCT jsonb_build_object('id', a.id, 'name', a.name))
|
||||
FROM artists_with_name a
|
||||
JOIN artist_releases ar ON ar.artist_id = a.id
|
||||
WHERE ar.release_id = r.id
|
||||
) AS artists
|
||||
FROM listens l
|
||||
JOIN tracks t ON l.track_id = t.id
|
||||
JOIN releases_with_title r ON t.release_id = r.id
|
||||
WHERE l.listened_at BETWEEN $1 AND $2
|
||||
GROUP BY r.id, r.title, r.musicbrainz_id, r.various_artists, r.image, r.image_source
|
||||
ORDER BY listen_count DESC
|
||||
LIMIT $3 OFFSET $4
|
||||
`
|
||||
|
||||
type GetTopReleasesPaginatedParams struct {
|
||||
ListenedAt time.Time
|
||||
ListenedAt_2 time.Time
|
||||
Limit int32
|
||||
Offset int32
|
||||
}
|
||||
|
||||
type GetTopReleasesPaginatedRow struct {
|
||||
ID int32
|
||||
MusicBrainzID *uuid.UUID
|
||||
Image *uuid.UUID
|
||||
VariousArtists bool
|
||||
ImageSource pgtype.Text
|
||||
Title string
|
||||
ListenCount int64
|
||||
Artists []byte
|
||||
}
|
||||
|
||||
func (q *Queries) GetTopReleasesPaginated(ctx context.Context, arg GetTopReleasesPaginatedParams) ([]GetTopReleasesPaginatedRow, error) {
|
||||
rows, err := q.db.Query(ctx, getTopReleasesPaginated,
|
||||
arg.ListenedAt,
|
||||
arg.ListenedAt_2,
|
||||
arg.Limit,
|
||||
arg.Offset,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []GetTopReleasesPaginatedRow
|
||||
for rows.Next() {
|
||||
var i GetTopReleasesPaginatedRow
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
&i.Title,
|
||||
&i.ListenCount,
|
||||
&i.Artists,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const insertRelease = `-- name: InsertRelease :one
|
||||
INSERT INTO releases (musicbrainz_id, various_artists, image, image_source)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
RETURNING id, musicbrainz_id, image, various_artists, image_source
|
||||
`
|
||||
|
||||
type InsertReleaseParams struct {
|
||||
MusicBrainzID *uuid.UUID
|
||||
VariousArtists bool
|
||||
Image *uuid.UUID
|
||||
ImageSource pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) InsertRelease(ctx context.Context, arg InsertReleaseParams) (Release, error) {
|
||||
row := q.db.QueryRow(ctx, insertRelease,
|
||||
arg.MusicBrainzID,
|
||||
arg.VariousArtists,
|
||||
arg.Image,
|
||||
arg.ImageSource,
|
||||
)
|
||||
var i Release
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.MusicBrainzID,
|
||||
&i.Image,
|
||||
&i.VariousArtists,
|
||||
&i.ImageSource,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const updateReleaseImage = `-- name: UpdateReleaseImage :exec
|
||||
UPDATE releases SET image = $2, image_source = $3
|
||||
WHERE id = $1
|
||||
`
|
||||
|
||||
type UpdateReleaseImageParams struct {
|
||||
ID int32
|
||||
Image *uuid.UUID
|
||||
ImageSource pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateReleaseImage(ctx context.Context, arg UpdateReleaseImageParams) error {
|
||||
_, err := q.db.Exec(ctx, updateReleaseImage, arg.ID, arg.Image, arg.ImageSource)
|
||||
return err
|
||||
}
|
||||
|
||||
const updateReleaseMbzID = `-- name: UpdateReleaseMbzID :exec
|
||||
UPDATE releases SET musicbrainz_id = $2
|
||||
WHERE id = $1
|
||||
`
|
||||
|
||||
type UpdateReleaseMbzIDParams struct {
|
||||
ID int32
|
||||
MusicBrainzID *uuid.UUID
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateReleaseMbzID(ctx context.Context, arg UpdateReleaseMbzIDParams) error {
|
||||
_, err := q.db.Exec(ctx, updateReleaseMbzID, arg.ID, arg.MusicBrainzID)
|
||||
return err
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue