34 lines
1.0 KiB
SQL
34 lines
1.0 KiB
SQL
-- Create History Table
|
|
create table public.history (
|
|
id uuid default gen_random_uuid() primary key,
|
|
user_id uuid references auth.users(id) not null,
|
|
subject_id text not null,
|
|
type text not null check (type in ('movie', 'series', 'dracin')),
|
|
title text not null,
|
|
poster text,
|
|
season integer, -- Only for series
|
|
episode integer, -- For series and dracin
|
|
last_position integer default 0, -- In seconds
|
|
duration integer default 0, -- In seconds
|
|
updated_at timestamp with time zone default timezone('utc'::text, now()) not null,
|
|
|
|
-- Use unique constraint to upsert based on user and content
|
|
unique(user_id, subject_id, type)
|
|
);
|
|
|
|
-- Enable RLS
|
|
alter table public.history enable row level security;
|
|
|
|
-- Policies
|
|
create policy "Users can view their own history"
|
|
on public.history for select
|
|
using (auth.uid() = user_id);
|
|
|
|
create policy "Users can insert their own history"
|
|
on public.history for insert
|
|
with check (auth.uid() = user_id);
|
|
|
|
create policy "Users can update their own history"
|
|
on public.history for update
|
|
using (auth.uid() = user_id);
|