24 lines
961 B
MySQL
24 lines
961 B
MySQL
|
|
-- +goose Up
|
||
|
|
ALTER TABLE album ADD COLUMN average_rating REAL NOT NULL DEFAULT 0;
|
||
|
|
ALTER TABLE media_file ADD COLUMN average_rating REAL NOT NULL DEFAULT 0;
|
||
|
|
ALTER TABLE artist ADD COLUMN average_rating REAL NOT NULL DEFAULT 0;
|
||
|
|
|
||
|
|
-- Populate average_rating from existing ratings
|
||
|
|
UPDATE album SET average_rating = coalesce(
|
||
|
|
(SELECT round(avg(rating), 2) FROM annotation WHERE item_id = album.id AND item_type = 'album' AND rating > 0),
|
||
|
|
0
|
||
|
|
);
|
||
|
|
UPDATE media_file SET average_rating = coalesce(
|
||
|
|
(SELECT round(avg(rating), 2) FROM annotation WHERE item_id = media_file.id AND item_type = 'media_file' AND rating > 0),
|
||
|
|
0
|
||
|
|
);
|
||
|
|
UPDATE artist SET average_rating = coalesce(
|
||
|
|
(SELECT round(avg(rating), 2) FROM annotation WHERE item_id = artist.id AND item_type = 'artist' AND rating > 0),
|
||
|
|
0
|
||
|
|
);
|
||
|
|
|
||
|
|
-- +goose Down
|
||
|
|
ALTER TABLE artist DROP COLUMN average_rating;
|
||
|
|
ALTER TABLE media_file DROP COLUMN average_rating;
|
||
|
|
ALTER TABLE album DROP COLUMN average_rating;
|