43 lines
1.6 KiB
PL/PgSQL
43 lines
1.6 KiB
PL/PgSQL
-- Personal report document v2 persistence metadata.
|
|
--
|
|
-- Existing v1 rows remain readable. New report creation persists an explicit
|
|
-- product depth and the current report_document.v2 schema version.
|
|
|
|
begin;
|
|
|
|
-- The hosted Supabase stream added named Skill identity in the preceding
|
|
-- immutable-registry migration. The self-hosted/local stream does not carry
|
|
-- that historical migration, so repeat the forward-compatible columns here.
|
|
-- `if not exists` keeps the two migration streams byte-identical and safe.
|
|
alter table public.personal_reports
|
|
add column if not exists skill_name text
|
|
check (
|
|
skill_name is null
|
|
or skill_name ~ '^[a-z0-9]([a-z0-9._-]*[a-z0-9])?$'
|
|
),
|
|
add column if not exists skill_version text
|
|
check (
|
|
skill_version is null
|
|
or (
|
|
length(skill_version) between 5 and 80
|
|
and skill_version ~ '^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$'
|
|
)
|
|
);
|
|
|
|
alter table public.personal_reports
|
|
add column if not exists depth text not null default 'standard';
|
|
|
|
alter table public.personal_reports
|
|
drop constraint if exists personal_reports_depth_check;
|
|
alter table public.personal_reports
|
|
add constraint personal_reports_depth_check
|
|
check (depth in ('concise', 'standard', 'deep', 'research'));
|
|
|
|
alter table public.personal_reports
|
|
drop constraint if exists personal_reports_schema_version_check;
|
|
alter table public.personal_reports
|
|
add constraint personal_reports_schema_version_check
|
|
check (schema_version in ('report_document.v1', 'report_document.v2'));
|
|
|
|
commit;
|