From eec2814bc3f7e78c9bea92a2b9c99794dd037fff Mon Sep 17 00:00:00 2001 From: ITQ Date: Wed, 20 May 2026 19:48:44 +0300 Subject: [PATCH] feat(migrations): added migrations for ratings and added some jellyfin ids --- .../db/migration/V4__add_ratings_table.sql | 17 +++++++++++++++++ .../migration/V5__add_jellyfin_id_columns.sql | 12 ++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/main/resources/db/migration/V4__add_ratings_table.sql create mode 100644 src/main/resources/db/migration/V5__add_jellyfin_id_columns.sql diff --git a/src/main/resources/db/migration/V4__add_ratings_table.sql b/src/main/resources/db/migration/V4__add_ratings_table.sql new file mode 100644 index 0000000..be1f105 --- /dev/null +++ b/src/main/resources/db/migration/V4__add_ratings_table.sql @@ -0,0 +1,17 @@ +-- Create ratings table to store user film ratings +CREATE TABLE ratings ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, + film_id BIGINT NOT NULL REFERENCES films(id) ON DELETE CASCADE, + rating NUMERIC(3, 1) NOT NULL CHECK (rating >= 0 AND rating <= 10), + source VARCHAR(50) NOT NULL DEFAULT 'MOVIENIGHT', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT unique_user_film_rating UNIQUE (user_id, film_id) +); + +-- Create index on user_id for efficient lookups by user +CREATE INDEX idx_ratings_user_id ON ratings(user_id); + +-- Create index on film_id for efficient lookups by film +CREATE INDEX idx_ratings_film_id ON ratings(film_id); diff --git a/src/main/resources/db/migration/V5__add_jellyfin_id_columns.sql b/src/main/resources/db/migration/V5__add_jellyfin_id_columns.sql new file mode 100644 index 0000000..c7c990b --- /dev/null +++ b/src/main/resources/db/migration/V5__add_jellyfin_id_columns.sql @@ -0,0 +1,12 @@ +-- Add jellyfin_id columns for mapping between MovieNight and Jellyfin +ALTER TABLE films + ADD COLUMN jellyfin_id UUID UNIQUE NULL, + ADD COLUMN jellyfin_library_id UUID NULL; + +CREATE INDEX idx_films_jellyfin_id ON films(jellyfin_id); + +-- Add jellyfin_id to users for sync mapping +ALTER TABLE users + ADD COLUMN jellyfin_id UUID UNIQUE NULL; + +CREATE INDEX idx_users_jellyfin_id ON users(jellyfin_id);