44 lines
1.5 KiB
PL/PgSQL
44 lines
1.5 KiB
PL/PgSQL
create table if not exists public.background_tasks (
|
|
id uuid primary key default gen_random_uuid(),
|
|
user_id uuid not null references auth.users (id) on delete cascade,
|
|
document_id uuid references public.documents (id) on delete cascade,
|
|
task_type text not null default 'ocr',
|
|
status text not null default 'pending',
|
|
progress integer not null default 0 check (progress between 0 and 100),
|
|
message text,
|
|
created_at timestamptz not null default timezone('utc', now()),
|
|
updated_at timestamptz not null default timezone('utc', now())
|
|
);
|
|
|
|
create index if not exists background_tasks_user_idx
|
|
on public.background_tasks (user_id, created_at desc);
|
|
|
|
create index if not exists background_tasks_document_idx
|
|
on public.background_tasks (document_id, created_at desc);
|
|
|
|
create or replace function public.set_background_tasks_updated_at()
|
|
returns trigger
|
|
language plpgsql
|
|
security invoker
|
|
as $$
|
|
begin
|
|
new.updated_at := timezone('utc', now());
|
|
return new;
|
|
end;
|
|
$$;
|
|
|
|
drop trigger if exists set_background_tasks_updated_at on public.background_tasks;
|
|
create trigger set_background_tasks_updated_at
|
|
before update on public.background_tasks
|
|
for each row
|
|
execute procedure public.set_background_tasks_updated_at();
|
|
|
|
alter table public.background_tasks enable row level security;
|
|
|
|
drop policy if exists "Own background tasks" on public.background_tasks;
|
|
create policy "Own background tasks"
|
|
on public.background_tasks
|
|
for all
|
|
using (auth.uid() = user_id)
|
|
with check (auth.uid() = user_id);
|