refac
This commit is contained in:
@@ -692,11 +692,16 @@ class KnowledgeTable:
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
async def reset_knowledge_by_id(self, id: str, db: Optional[AsyncSession] = None) -> Optional[KnowledgeModel]:
|
||||
async def reset_knowledge_by_id(self, id: str, include_directories: bool = True, db: Optional[AsyncSession] = None) -> Optional[KnowledgeModel]:
|
||||
try:
|
||||
async with get_async_db_context(db) as db:
|
||||
# Delete all knowledge_file entries for this knowledge_id
|
||||
await db.execute(delete(KnowledgeFile).filter_by(knowledge_id=id))
|
||||
|
||||
# Delete all directories if requested
|
||||
if include_directories:
|
||||
await db.execute(delete(KnowledgeDirectory).filter_by(knowledge_id=id))
|
||||
|
||||
await db.commit()
|
||||
|
||||
# Update the knowledge entry's updated_at timestamp
|
||||
|
||||
@@ -950,7 +950,10 @@ async def delete_knowledge_by_id(
|
||||
|
||||
@router.post('/{id}/reset', response_model=KnowledgeResponse | None)
|
||||
async def reset_knowledge_by_id(
|
||||
id: str, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)
|
||||
id: str,
|
||||
include_directories: bool = Query(True),
|
||||
user=Depends(get_verified_user),
|
||||
db: AsyncSession = Depends(get_async_session),
|
||||
):
|
||||
knowledge = await Knowledges.get_knowledge_by_id(id=id, db=db)
|
||||
if not knowledge:
|
||||
@@ -981,7 +984,7 @@ async def reset_knowledge_by_id(
|
||||
log.debug(e)
|
||||
pass
|
||||
|
||||
knowledge = await Knowledges.reset_knowledge_by_id(id=id, db=db)
|
||||
knowledge = await Knowledges.reset_knowledge_by_id(id=id, include_directories=include_directories, db=db)
|
||||
return knowledge
|
||||
|
||||
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
let pendingSyncFiles: Array<{ path: string; filename: string; file: File }> | null = null;
|
||||
let syncing: string | null = null;
|
||||
let showAccessControlModal = false;
|
||||
let showResetConfirm = false;
|
||||
|
||||
let minSize = 0;
|
||||
type Knowledge = {
|
||||
@@ -1292,8 +1293,11 @@
|
||||
if (pendingSyncFiles?.length) {
|
||||
showSyncConfirmModal = true;
|
||||
}
|
||||
}}
|
||||
/>
|
||||
}}
|
||||
onReset={() => {
|
||||
showResetConfirm = true;
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
@@ -1528,3 +1532,17 @@
|
||||
</div>
|
||||
</div>
|
||||
</ConfirmDialog>
|
||||
|
||||
<ConfirmDialog
|
||||
bind:show={showResetConfirm}
|
||||
title={$i18n.t('Reset knowledge base?')}
|
||||
on:confirm={async () => {
|
||||
await resetKnowledgeById(localStorage.token, id);
|
||||
toast.success($i18n.t('Knowledge base has been reset'));
|
||||
init();
|
||||
}}
|
||||
>
|
||||
<div class="text-sm text-gray-700 dark:text-gray-300 flex-1 line-clamp-3">
|
||||
{$i18n.t('This will remove all files and directories from this knowledge base. This action cannot be undone.')}
|
||||
</div>
|
||||
</ConfirmDialog>
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
import NewFolderAlt from '$lib/components/icons/NewFolderAlt.svelte';
|
||||
import ArrowPath from '$lib/components/icons/ArrowPath.svelte';
|
||||
import GlobeAlt from '$lib/components/icons/GlobeAlt.svelte';
|
||||
import GarbageBin from '$lib/components/icons/GarbageBin.svelte';
|
||||
import ArrowUturnLeft from '$lib/components/icons/ArrowUturnLeft.svelte';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
@@ -17,6 +19,7 @@
|
||||
|
||||
export let onSync: Function = () => {};
|
||||
export let onUpload: Function = (data) => {};
|
||||
export let onReset: Function = () => {};
|
||||
|
||||
let show = false;
|
||||
</script>
|
||||
@@ -124,6 +127,19 @@
|
||||
<BarsArrowUp strokeWidth="2" />
|
||||
<div class="flex items-center">{$i18n.t('Add text content')}</div>
|
||||
</button>
|
||||
|
||||
<hr class="my-1 border-gray-100 dark:border-gray-800" />
|
||||
|
||||
<button
|
||||
class="select-none flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl w-full"
|
||||
on:click={() => {
|
||||
onReset();
|
||||
show = false;
|
||||
}}
|
||||
>
|
||||
<ArrowUturnLeft strokeWidth="2" />
|
||||
<div class="flex items-center">{$i18n.t('Reset')}</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</Dropdown>
|
||||
|
||||
Reference in New Issue
Block a user