Files
mnote/supabase/migrations/20260109072800_20260109_add_rag_delete_triggers.sql
T

64 lines
1.7 KiB
PL/PgSQL
Raw Normal View History

2026-01-10 10:35:21 +08:00
-- 说明:为“删除文件时清理 LightRAG 资源”补齐删除触发器,避免垃圾堆积。
-- 编码:UTF-8
-- media_assets:硬删除时也要入队(让 ingest_service 删除 LightRAG doc
create or replace function public.enqueue_rag_for_media_asset_delete()
returns trigger
language plpgsql
as $function$
declare
v_user_id uuid;
begin
select user_id
into v_user_id
from public.documents
where id = old.document_id;
perform public.upsert_rag_index_source(
old.workspace_id,
'media_asset',
old.id,
old.document_id,
coalesce(old.created_by, v_user_id),
timezone('utc', now())
);
return old;
end;
$function$;
drop trigger if exists enqueue_rag_for_media_asset_delete on public.media_assets;
create trigger enqueue_rag_for_media_asset_delete
after delete on public.media_assets
for each row execute function public.enqueue_rag_for_media_asset_delete();
-- mindmap_nodes:硬删除节点时,也入队(让 ingest_service 删除/重建 mindmap 对应索引)
create or replace function public.enqueue_rag_for_mindmap_node_delete()
returns trigger
language plpgsql
as $function$
declare
v_user_id uuid;
begin
select user_id
into v_user_id
from public.documents
where id = old.document_id;
perform public.upsert_rag_index_source(
old.workspace_id,
'mindmap',
old.mindmap_id,
old.document_id,
v_user_id,
timezone('utc', now())
);
return old;
end;
$function$;
drop trigger if exists enqueue_rag_for_mindmap_node_delete on public.mindmap_nodes;
create trigger enqueue_rag_for_mindmap_node_delete
after delete on public.mindmap_nodes
for each row execute function public.enqueue_rag_for_mindmap_node_delete();