Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions backend/api/quivr_api/modules/knowledge/dto/inputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,13 @@ class CreateKnowledgeProperties(BaseModel):
class AddKnowledge(BaseModel):
file_name: Optional[str] = None
url: Optional[str] = None
extension: str = ".txt"
is_folder: bool = False
source: str = "local"
source_link: Optional[str] = None
metadata: Optional[Dict[str, str]] = None
is_folder: bool = False
parent_id: UUID | None = None
sync_id: int | None = None
sync_file_id: str | None = None
metadata: Optional[Dict[str, str]] = None


class KnowledgeUpdate(BaseModel):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
)
from quivr_api.modules.sync.entity.sync_models import SyncFile, SyncType
from quivr_api.modules.upload.service.upload_file import check_file_exists
from quivr_api.utils.knowledge_utils import parse_file_extension

logger = get_logger(__name__)

Expand Down Expand Up @@ -95,7 +96,6 @@ async def create_or_link_sync_knowledge(
knowledge_to_add=AddKnowledge(
file_name=sync_file.name,
is_folder=sync_file.is_folder,
extension=sync_file.extension,
source=parent_knowledge.source, # same as parent
source_link=sync_file.web_view_link,
parent_id=parent_knowledge.id,
Expand Down Expand Up @@ -183,13 +183,19 @@ async def create_knowledge(
if b.brain_id not in {b.brain_id for b in brains}
]
)
# TODO: slugify url names here !!
extension = (
parse_file_extension(knowledge_to_add.file_name)
if knowledge_to_add.file_name
else ""
)

knowledgedb = KnowledgeDB(
user_id=user_id,
file_name=knowledge_to_add.file_name,
is_folder=knowledge_to_add.is_folder,
url=knowledge_to_add.url,
extension=knowledge_to_add.extension,
extension=extension,
source=knowledge_to_add.source,
source_link=knowledge_to_add.source_link,
file_size=upload_file.size if upload_file else 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@ async def test_create_knowledge_folder(session: AsyncSession, user: User):
service = KnowledgeService(repository, storage)

km_to_add = AddKnowledge(
file_name="test",
file_name="test.txt",
source="local",
is_folder=True,
parent_id=None,
Expand All @@ -566,9 +566,9 @@ async def test_create_knowledge_folder(session: AsyncSession, user: User):
assert km.id
# Knowledge properties
assert km.file_name == km_to_add.file_name
assert km.extension == ".txt"
assert km.is_folder == km_to_add.is_folder
assert km.url == km_to_add.url
assert km.extension == km_to_add.extension
assert km.source == km_to_add.source
assert km.file_size == 128
assert km.metadata_ == km_to_add.metadata
Expand Down Expand Up @@ -613,7 +613,6 @@ def _send_task(*args, **kwargs):
assert km.file_name == km_to_add.file_name
assert km.is_folder == km_to_add.is_folder
assert km.url == km_to_add.url
assert km.extension == km_to_add.extension
assert km.source == km_to_add.source
assert km.file_size == 128
assert km.metadata_ == km_to_add.metadata
Expand Down
10 changes: 10 additions & 0 deletions backend/api/quivr_api/utils/knowledge_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from quivr_core.files.file import FileExtension


def parse_file_extension(file_name: str) -> FileExtension | str:
if file_name.startswith(".") and file_name.count(".") == 1:
return ""
if "." not in file_name or file_name.endswith("."):
return ""

return FileExtension(f".{file_name.split('.')[-1]}")
Loading