mirror of https://github.com/gabehf/Koito.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
-- +goose Up
|
|
-- +goose StatementBegin
|
|
SELECT 'up SQL query';
|
|
-- +goose StatementEnd
|
|
ALTER TABLE artist_tracks
|
|
ADD COLUMN is_primary boolean NOT NULL DEFAULT false;
|
|
|
|
ALTER TABLE artist_releases
|
|
ADD COLUMN is_primary boolean NOT NULL DEFAULT false;
|
|
|
|
-- +goose StatementBegin
|
|
CREATE FUNCTION get_artists_for_release(release_id INTEGER)
|
|
RETURNS JSONB AS $$
|
|
SELECT json_agg(
|
|
jsonb_build_object('id', a.id, 'name', a.name)
|
|
ORDER BY ar.is_primary DESC, a.name
|
|
)
|
|
FROM artist_releases ar
|
|
JOIN artists_with_name a ON a.id = ar.artist_id
|
|
WHERE ar.release_id = $1;
|
|
$$ LANGUAGE sql STABLE;
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose StatementBegin
|
|
CREATE FUNCTION get_artists_for_track(track_id INTEGER)
|
|
RETURNS JSONB AS $$
|
|
SELECT json_agg(
|
|
jsonb_build_object('id', a.id, 'name', a.name)
|
|
ORDER BY at.is_primary DESC, a.name
|
|
)
|
|
FROM artist_tracks at
|
|
JOIN artists_with_name a ON a.id = at.artist_id
|
|
WHERE at.track_id = $1;
|
|
$$ LANGUAGE sql STABLE;
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
SELECT 'down SQL query';
|
|
-- +goose StatementEnd
|
|
ALTER TABLE artist_tracks
|
|
DROP COLUMN is_primary;
|
|
|
|
ALTER TABLE artist_releases
|
|
DROP COLUMN is_primary;
|
|
|
|
DROP FUNCTION IF EXISTS get_artists_for_release(INTEGER);
|
|
DROP FUNCTION IF EXISTS get_artists_for_track(INTEGER); |