mirror of
https://github.com/willchen96/mike.git
synced 2026-07-24 23:41:04 +02:00
71 lines
2 KiB
SQL
71 lines
2 KiB
SQL
-- Migration date: 2026-07-10
|
|
|
|
alter table public.documents
|
|
add column if not exists library_kind text default 'file';
|
|
|
|
update public.documents
|
|
set library_kind = 'file'
|
|
where library_kind is null;
|
|
|
|
alter table public.documents
|
|
alter column library_kind set default 'file',
|
|
alter column library_kind set not null;
|
|
|
|
do $$
|
|
begin
|
|
if not exists (
|
|
select 1
|
|
from pg_constraint
|
|
where conname = 'documents_library_kind_check'
|
|
and conrelid = 'public.documents'::regclass
|
|
) then
|
|
alter table public.documents
|
|
add constraint documents_library_kind_check
|
|
check (library_kind in ('file', 'template'));
|
|
end if;
|
|
end;
|
|
$$;
|
|
|
|
create table if not exists public.library_folders (
|
|
id uuid primary key default gen_random_uuid(),
|
|
user_id text not null,
|
|
library_kind text not null default 'file',
|
|
name text not null,
|
|
parent_folder_id uuid references public.library_folders(id) on delete cascade,
|
|
created_at timestamptz not null default now(),
|
|
updated_at timestamptz not null default now(),
|
|
constraint library_folders_kind_check
|
|
check (library_kind in ('file', 'template'))
|
|
);
|
|
|
|
alter table public.documents
|
|
add column if not exists library_folder_id uuid;
|
|
|
|
do $$
|
|
begin
|
|
if not exists (
|
|
select 1
|
|
from pg_constraint
|
|
where conname = 'documents_library_folder_id_fkey'
|
|
and conrelid = 'public.documents'::regclass
|
|
) then
|
|
alter table public.documents
|
|
add constraint documents_library_folder_id_fkey
|
|
foreign key (library_folder_id)
|
|
references public.library_folders(id)
|
|
on delete set null;
|
|
end if;
|
|
end;
|
|
$$;
|
|
|
|
create index if not exists idx_library_folders_user_kind
|
|
on public.library_folders(user_id, library_kind);
|
|
|
|
create index if not exists idx_library_folders_parent
|
|
on public.library_folders(parent_folder_id);
|
|
|
|
create index if not exists idx_documents_library_kind_folder
|
|
on public.documents(user_id, library_kind, library_folder_id)
|
|
where project_id is null;
|
|
|
|
revoke all on public.library_folders from anon, authenticated;
|