feat(db): add lidarr_quarantine + actions schema (migration 0011)
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
DROP INDEX IF EXISTS lidarr_quarantine_actions_created_idx;
|
||||
DROP INDEX IF EXISTS lidarr_quarantine_actions_track_idx;
|
||||
DROP TABLE IF EXISTS lidarr_quarantine_actions;
|
||||
DROP TYPE IF EXISTS lidarr_quarantine_action_kind;
|
||||
DROP INDEX IF EXISTS lidarr_quarantine_user_idx;
|
||||
DROP INDEX IF EXISTS lidarr_quarantine_track_idx;
|
||||
DROP TABLE IF EXISTS lidarr_quarantine;
|
||||
DROP TYPE IF EXISTS lidarr_quarantine_reason;
|
||||
@@ -0,0 +1,45 @@
|
||||
-- M5b: per-user track quarantines + admin action audit log.
|
||||
--
|
||||
-- lidarr_quarantine — one row per (user, track) complaint. PK matches
|
||||
-- the general_likes pattern. Re-flagging the same track upserts. Deleted
|
||||
-- on user resolution (un-hide), admin Resolve, or any of the deletes.
|
||||
--
|
||||
-- lidarr_quarantine_actions — audit log of admin destructive actions.
|
||||
-- Snapshot text columns let the log stay readable after the underlying
|
||||
-- track/album rows are gone.
|
||||
|
||||
CREATE TYPE lidarr_quarantine_reason AS ENUM (
|
||||
'bad_rip', 'wrong_file', 'wrong_tags', 'duplicate', 'other'
|
||||
);
|
||||
|
||||
CREATE TABLE lidarr_quarantine (
|
||||
user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
track_id uuid NOT NULL REFERENCES tracks(id) ON DELETE CASCADE,
|
||||
reason lidarr_quarantine_reason NOT NULL,
|
||||
notes text,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
PRIMARY KEY (user_id, track_id)
|
||||
);
|
||||
|
||||
CREATE INDEX lidarr_quarantine_track_idx ON lidarr_quarantine (track_id);
|
||||
CREATE INDEX lidarr_quarantine_user_idx ON lidarr_quarantine (user_id, created_at DESC);
|
||||
|
||||
CREATE TYPE lidarr_quarantine_action_kind AS ENUM (
|
||||
'resolved', 'deleted_file', 'deleted_via_lidarr'
|
||||
);
|
||||
|
||||
CREATE TABLE lidarr_quarantine_actions (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
track_id uuid NOT NULL,
|
||||
track_title text NOT NULL,
|
||||
artist_name text NOT NULL,
|
||||
album_title text,
|
||||
action lidarr_quarantine_action_kind NOT NULL,
|
||||
admin_id uuid REFERENCES users(id) ON DELETE SET NULL,
|
||||
lidarr_album_mbid text,
|
||||
affected_users int NOT NULL,
|
||||
created_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX lidarr_quarantine_actions_track_idx ON lidarr_quarantine_actions (track_id);
|
||||
CREATE INDEX lidarr_quarantine_actions_created_idx ON lidarr_quarantine_actions (created_at DESC);
|
||||
Reference in New Issue
Block a user