|
|
|
@@ -14,7 +14,7 @@ |
|
|
|
# limitations under the License. |
|
|
|
# |
|
|
|
from api.db import StatusEnum, TenantPermission |
|
|
|
from api.db.db_models import Knowledgebase, DB, Tenant |
|
|
|
from api.db.db_models import Knowledgebase, DB, Tenant, User |
|
|
|
from api.db.services.common_service import CommonService |
|
|
|
|
|
|
|
|
|
|
|
@@ -25,10 +25,26 @@ class KnowledgebaseService(CommonService): |
|
|
|
@DB.connection_context() |
|
|
|
def get_by_tenant_ids(cls, joined_tenant_ids, user_id, |
|
|
|
page_number, items_per_page, orderby, desc): |
|
|
|
kbs = cls.model.select().where( |
|
|
|
fields = [ |
|
|
|
cls.model.id, |
|
|
|
cls.model.avatar, |
|
|
|
cls.model.name, |
|
|
|
cls.model.language, |
|
|
|
cls.model.description, |
|
|
|
cls.model.permission, |
|
|
|
cls.model.doc_num, |
|
|
|
cls.model.token_num, |
|
|
|
cls.model.chunk_num, |
|
|
|
cls.model.parser_id, |
|
|
|
cls.model.embd_id, |
|
|
|
User.nickname, |
|
|
|
User.avatar.alias('tenant_avatar'), |
|
|
|
cls.model.update_time |
|
|
|
] |
|
|
|
kbs = cls.model.select(*fields).join(User, on=(cls.model.tenant_id == User.id)).where( |
|
|
|
((cls.model.tenant_id.in_(joined_tenant_ids) & (cls.model.permission == |
|
|
|
TenantPermission.TEAM.value)) | ( |
|
|
|
cls.model.tenant_id == user_id)) |
|
|
|
cls.model.tenant_id == user_id)) |
|
|
|
& (cls.model.status == StatusEnum.VALID.value) |
|
|
|
) |
|
|
|
if desc: |
|
|
|
@@ -63,14 +79,14 @@ class KnowledgebaseService(CommonService): |
|
|
|
if count == -1: |
|
|
|
return kbs[offset:] |
|
|
|
|
|
|
|
return kbs[offset:offset+count] |
|
|
|
return kbs[offset:offset + count] |
|
|
|
|
|
|
|
@classmethod |
|
|
|
@DB.connection_context() |
|
|
|
def get_detail(cls, kb_id): |
|
|
|
fields = [ |
|
|
|
cls.model.id, |
|
|
|
#Tenant.embd_id, |
|
|
|
# Tenant.embd_id, |
|
|
|
cls.model.embd_id, |
|
|
|
cls.model.avatar, |
|
|
|
cls.model.name, |
|
|
|
@@ -83,14 +99,14 @@ class KnowledgebaseService(CommonService): |
|
|
|
cls.model.parser_id, |
|
|
|
cls.model.parser_config] |
|
|
|
kbs = cls.model.select(*fields).join(Tenant, on=( |
|
|
|
(Tenant.id == cls.model.tenant_id) & (Tenant.status == StatusEnum.VALID.value))).where( |
|
|
|
(Tenant.id == cls.model.tenant_id) & (Tenant.status == StatusEnum.VALID.value))).where( |
|
|
|
(cls.model.id == kb_id), |
|
|
|
(cls.model.status == StatusEnum.VALID.value) |
|
|
|
) |
|
|
|
if not kbs: |
|
|
|
return |
|
|
|
d = kbs[0].to_dict() |
|
|
|
#d["embd_id"] = kbs[0].tenant.embd_id |
|
|
|
# d["embd_id"] = kbs[0].tenant.embd_id |
|
|
|
return d |
|
|
|
|
|
|
|
@classmethod |
|
|
|
@@ -146,7 +162,7 @@ class KnowledgebaseService(CommonService): |
|
|
|
@classmethod |
|
|
|
@DB.connection_context() |
|
|
|
def get_list(cls, joined_tenant_ids, user_id, |
|
|
|
page_number, items_per_page, orderby, desc, id , name): |
|
|
|
page_number, items_per_page, orderby, desc, id, name): |
|
|
|
kbs = cls.model.select() |
|
|
|
if id: |
|
|
|
kbs = kbs.where(cls.model.id == id) |