mirror of
https://github.com/QuivrHQ/quivr.git
synced 2024-12-16 01:55:15 +03:00
71edca572f
# Description closes #3056. closes #3198 - Create knowledge route - Get knowledge route - List knowledge route : accepts knowledge_id | None. None to list root knowledge for use - Update (patch) knowledge to rename and move knowledge - Remove knowledge: Cascade if parent_id in knowledge and cleanup storage - Link storage upload to knowledge_service - Relax sha1 file constraint - Tests to all repository / service --------- Co-authored-by: Stan Girard <girard.stanislas@gmail.com>
32 lines
1.1 KiB
PL/PgSQL
32 lines
1.1 KiB
PL/PgSQL
ALTER USER postgres
|
|
SET idle_session_timeout = '3min';
|
|
ALTER USER postgres
|
|
SET idle_in_transaction_session_timeout = '3min';
|
|
-- Drop previous contraint
|
|
alter table "public"."knowledge" drop constraint "unique_file_sha1_user_id";
|
|
alter table "public"."knowledge"
|
|
add column "is_folder" boolean default false;
|
|
-- Update the knowledge to backfill knowledge to is_folder = false
|
|
UPDATE "public"."knowledge"
|
|
SET is_folder = false;
|
|
-- Add parent_id -> folder
|
|
alter table "public"."knowledge"
|
|
add column "parent_id" uuid;
|
|
alter table "public"."knowledge"
|
|
add constraint "public_knowledge_parent_id_fkey" FOREIGN KEY (parent_id) REFERENCES knowledge(id) ON DELETE CASCADE;
|
|
-- Add constraint must be folder for parent_id
|
|
CREATE FUNCTION is_parent_folder(folder_id uuid) RETURNS boolean AS $$ BEGIN RETURN (
|
|
SELECT k.is_folder
|
|
FROM public.knowledge k
|
|
WHERE k.id = folder_id
|
|
);
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
ALTER TABLE public.knowledge
|
|
ADD CONSTRAINT check_parent_is_folder CHECK (
|
|
parent_id IS NULL
|
|
OR is_parent_folder(parent_id)
|
|
);
|
|
-- Index on parent_id
|
|
CREATE INDEX knowledge_parent_id_idx ON public.knowledge USING btree (parent_id);
|