Files
WeKnora/migrations/sqlite/000002_knowledge_folder_path.up.sql
T
lyingbug fa67dfd44b feat(knowledge): store folder path for folder uploads and expose folder tree API
Folder uploads used to encode their relative directory inside file_name,
which made the document list render the whole path as the title and left
no way to browse or query a single folder. The directory now lives in a
dedicated folder_path column (with a backfill for existing rows), the
document list accepts folder_path / folder_recursive filters, and a new
GET /knowledge-bases/:id/knowledge/folders endpoint returns the folder
tree with per-folder document counts.
2026-08-04 20:45:29 +08:00

24 lines
948 B
SQL

-- Folder tree support for knowledge bases (SQLite / lite mode).
--
-- Mirrors migrations/versioned/000079_knowledge_folder_path.up.sql.
ALTER TABLE knowledges ADD COLUMN folder_path VARCHAR(1024) NOT NULL DEFAULT '';
-- Backfill legacy folder uploads, which encoded their relative directory in
-- file_name. SQLite has no regex, so the directory prefix is isolated with the
-- rtrim trick: trimming every non-slash character off the right leaves exactly
-- the prefix up to and including the last '/'.
UPDATE knowledges
SET folder_path = substr(
rtrim(file_name, replace(file_name, '/', '')),
1,
length(rtrim(file_name, replace(file_name, '/', ''))) - 1
),
file_name = substr(
file_name,
length(rtrim(file_name, replace(file_name, '/', ''))) + 1
)
WHERE file_name LIKE '%/%';
CREATE INDEX IF NOT EXISTS idx_knowledges_folder_path
ON knowledges (tenant_id, knowledge_base_id, folder_path);