fix: sqlor IN列表参数展开占位符(kb_delete 500+媒体检索潜伏同病,共4处)
This commit is contained in:
parent
3f5c6fc3e7
commit
d3dda01e6e
@ -176,7 +176,9 @@ async def kb_delete(env, ns):
|
|||||||
|
|
||||||
# DB 记录
|
# DB 记录
|
||||||
if doc_ids:
|
if doc_ids:
|
||||||
await sor.sqlExe("DELETE FROM rag_document_chunks WHERE doc_id IN (${ids}$)", {"ids": doc_ids})
|
dmap = {("i%d" % i): d for i, d in enumerate(doc_ids)}
|
||||||
|
dph = ",".join("${" + k + "}$" for k in dmap)
|
||||||
|
await sor.sqlExe("DELETE FROM rag_document_chunks WHERE doc_id IN (" + dph + ")", dmap)
|
||||||
await sor.sqlExe("DELETE FROM rag_entities WHERE kb_id=${k}$", {"k": kb_id})
|
await sor.sqlExe("DELETE FROM rag_entities WHERE kb_id=${k}$", {"k": kb_id})
|
||||||
await sor.sqlExe("DELETE FROM rag_entity_relations WHERE kb_id=${k}$", {"k": kb_id})
|
await sor.sqlExe("DELETE FROM rag_entity_relations WHERE kb_id=${k}$", {"k": kb_id})
|
||||||
await sor.sqlExe("DELETE FROM rag_media_tags WHERE kb_id=${k}$", {"k": kb_id})
|
await sor.sqlExe("DELETE FROM rag_media_tags WHERE kb_id=${k}$", {"k": kb_id})
|
||||||
|
|||||||
18
rag/init.py
18
rag/init.py
@ -1132,21 +1132,27 @@ async def tag_search_handler(request, params_kw, *args, **kwargs):
|
|||||||
voice_ids = [mid for mt, mid in matched if mt == "voice"]
|
voice_ids = [mid for mt, mid in matched if mt == "voice"]
|
||||||
results = []
|
results = []
|
||||||
if doc_ids:
|
if doc_ids:
|
||||||
|
dmap = {("i%d" % i): d for i, d in enumerate(doc_ids)}
|
||||||
|
dph = ",".join("${" + k + "}$" for k in dmap)
|
||||||
docs = await sor.sqlExe(
|
docs = await sor.sqlExe(
|
||||||
"SELECT id, file_name, file_type, file_size, status, created_at FROM rag_documents WHERE id IN (${ids}$)",
|
"SELECT id, file_name, file_type, file_size, status, created_at FROM rag_documents WHERE id IN (" + dph + ")",
|
||||||
{"ids": doc_ids})
|
dmap)
|
||||||
for d in docs:
|
for d in docs:
|
||||||
results.append({"type": "document", "id": d.id, "name": d.file_name, "file_type": d.file_type, "size": d.file_size, "status": d.status, "created_at": str(d.created_at)})
|
results.append({"type": "document", "id": d.id, "name": d.file_name, "file_type": d.file_type, "size": d.file_size, "status": d.status, "created_at": str(d.created_at)})
|
||||||
if face_ids:
|
if face_ids:
|
||||||
|
fmap = {("i%d" % i): d for i, d in enumerate(face_ids)}
|
||||||
|
fph = ",".join("${" + k + "}$" for k in fmap)
|
||||||
faces = await sor.sqlExe(
|
faces = await sor.sqlExe(
|
||||||
"SELECT id, name, description, face_embedding_id, created_at FROM rag_entities WHERE id IN (${ids}$) AND entity_type='person'",
|
"SELECT id, name, description, face_embedding_id, created_at FROM rag_entities WHERE id IN (" + fph + ") AND entity_type='person'",
|
||||||
{"ids": face_ids})
|
fmap)
|
||||||
for f in faces:
|
for f in faces:
|
||||||
results.append({"type": "face", "id": f.id, "name": f.name, "description": f.description, "created_at": str(f.created_at)})
|
results.append({"type": "face", "id": f.id, "name": f.name, "description": f.description, "created_at": str(f.created_at)})
|
||||||
if voice_ids:
|
if voice_ids:
|
||||||
|
vmap = {("i%d" % i): d for i, d in enumerate(voice_ids)}
|
||||||
|
vph = ",".join("${" + k + "}$" for k in vmap)
|
||||||
voices = await sor.sqlExe(
|
voices = await sor.sqlExe(
|
||||||
"SELECT id, name, description, voice_embedding_id, created_at FROM rag_entities WHERE id IN (${ids}$) AND entity_type='voice'",
|
"SELECT id, name, description, voice_embedding_id, created_at FROM rag_entities WHERE id IN (" + vph + ") AND entity_type='voice'",
|
||||||
{"ids": voice_ids})
|
vmap)
|
||||||
for v in voices:
|
for v in voices:
|
||||||
results.append({"type": "voice", "id": v.id, "name": v.name, "description": v.description, "created_at": str(v.created_at)})
|
results.append({"type": "voice", "id": v.id, "name": v.name, "description": v.description, "created_at": str(v.created_at)})
|
||||||
if query:
|
if query:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user