64 lines
1.7 KiB
PL/PgSQL
64 lines
1.7 KiB
PL/PgSQL
-- 说明:为“删除文件时清理 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();
|
||
|