mirror of
https://github.com/navidrome/navidrome.git
synced 2025-12-23 23:18:05 -05:00
fix(db): add user foreign key constraint to annotation table (#4211)
* fix(db): add user foreign key constraint to annotation table Associates user_id with user.id, with cascade for delete (drop annotation) and update (update annotation). Migration script will only copy/insert annotations for user IDs that exist * remove default for user_id * refactor(db): rename migration correct sequencing Signed-off-by: Deluan <deluan@navidrome.org> --------- Signed-off-by: Deluan <deluan@navidrome.org> Co-authored-by: Deluan <deluan@navidrome.org>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE TABLE IF NOT EXISTS annotation_tmp
|
||||
(
|
||||
user_id varchar(255) not null
|
||||
REFERENCES user(id)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE,
|
||||
item_id varchar(255) default '' not null,
|
||||
item_type varchar(255) default '' not null,
|
||||
play_count integer default 0,
|
||||
play_date datetime,
|
||||
rating integer default 0,
|
||||
starred bool default FALSE not null,
|
||||
starred_at datetime,
|
||||
unique (user_id, item_id, item_type)
|
||||
);
|
||||
|
||||
|
||||
INSERT INTO annotation_tmp(
|
||||
user_id, item_id, item_type, play_count, play_date, rating, starred, starred_at
|
||||
)
|
||||
SELECT user_id, item_id, item_type, play_count, play_date, rating, starred, starred_at
|
||||
FROM annotation
|
||||
WHERE user_id IN (
|
||||
SELECT id FROM user
|
||||
);
|
||||
|
||||
DROP TABLE annotation;
|
||||
ALTER TABLE annotation_tmp RENAME TO annotation;
|
||||
|
||||
CREATE INDEX annotation_play_count
|
||||
on annotation (play_count);
|
||||
CREATE INDEX annotation_play_date
|
||||
on annotation (play_date);
|
||||
CREATE INDEX annotation_rating
|
||||
on annotation (rating);
|
||||
CREATE INDEX annotation_starred
|
||||
on annotation (starred);
|
||||
CREATE INDEX annotation_starred_at
|
||||
on annotation (starred_at);
|
||||
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
|
||||
Reference in New Issue
Block a user