|
@@ -8,6 +8,7 @@ from open_webui.apps.webui.internal.db import Base, get_db
|
|
from open_webui.env import SRC_LOG_LEVELS
|
|
from open_webui.env import SRC_LOG_LEVELS
|
|
|
|
|
|
from open_webui.apps.webui.models.files import FileMetadataResponse
|
|
from open_webui.apps.webui.models.files import FileMetadataResponse
|
|
|
|
+from open_webui.apps.webui.models.users import Users, UserResponse
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
from pydantic import BaseModel, ConfigDict
|
|
@@ -79,17 +80,15 @@ class KnowledgeModel(BaseModel):
|
|
####################
|
|
####################
|
|
|
|
|
|
|
|
|
|
-class KnowledgeResponse(BaseModel):
|
|
|
|
- id: str
|
|
|
|
- name: str
|
|
|
|
- description: str
|
|
|
|
- data: Optional[dict] = None
|
|
|
|
- meta: Optional[dict] = None
|
|
|
|
|
|
+class KnowledgeUserModel(KnowledgeModel):
|
|
|
|
+ user: Optional[UserResponse] = None
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class KnowledgeResponse(KnowledgeModel):
|
|
|
|
+ files: Optional[list[FileMetadataResponse | dict]] = None
|
|
|
|
|
|
- access_control: Optional[dict] = None
|
|
|
|
- created_at: int # timestamp in epoch
|
|
|
|
- updated_at: int # timestamp in epoch
|
|
|
|
|
|
|
|
|
|
+class KnowledgeUserResponse(KnowledgeUserModel):
|
|
files: Optional[list[FileMetadataResponse | dict]] = None
|
|
files: Optional[list[FileMetadataResponse | dict]] = None
|
|
|
|
|
|
|
|
|
|
@@ -127,10 +126,15 @@ class KnowledgeTable:
|
|
except Exception:
|
|
except Exception:
|
|
return None
|
|
return None
|
|
|
|
|
|
- def get_knowledge_bases(self) -> list[KnowledgeModel]:
|
|
|
|
|
|
+ def get_knowledge_bases(self) -> list[KnowledgeUserModel]:
|
|
with get_db() as db:
|
|
with get_db() as db:
|
|
return [
|
|
return [
|
|
- KnowledgeModel.model_validate(knowledge)
|
|
|
|
|
|
+ KnowledgeUserModel.model_validate(
|
|
|
|
+ {
|
|
|
|
+ **KnowledgeModel.model_validate(knowledge).model_dump(),
|
|
|
|
+ "user": Users.get_user_by_id(knowledge.user_id).model_dump(),
|
|
|
|
+ }
|
|
|
|
+ )
|
|
for knowledge in db.query(Knowledge)
|
|
for knowledge in db.query(Knowledge)
|
|
.order_by(Knowledge.updated_at.desc())
|
|
.order_by(Knowledge.updated_at.desc())
|
|
.all()
|
|
.all()
|
|
@@ -138,7 +142,7 @@ class KnowledgeTable:
|
|
|
|
|
|
def get_knowledge_bases_by_user_id(
|
|
def get_knowledge_bases_by_user_id(
|
|
self, user_id: str, permission: str = "write"
|
|
self, user_id: str, permission: str = "write"
|
|
- ) -> list[KnowledgeModel]:
|
|
|
|
|
|
+ ) -> list[KnowledgeUserModel]:
|
|
knowledge_bases = self.get_knowledge_bases()
|
|
knowledge_bases = self.get_knowledge_bases()
|
|
return [
|
|
return [
|
|
knowledge_base
|
|
knowledge_base
|