mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
Feat: add total in List dataset API (#10448)
### What problem does this PR solve? Feat: add total in List dataset API, solved #10360 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
@ -461,7 +461,7 @@ def list_datasets(tenant_id):
|
|||||||
return get_error_permission_result(message=f"User '{tenant_id}' lacks permission for dataset '{name}'")
|
return get_error_permission_result(message=f"User '{tenant_id}' lacks permission for dataset '{name}'")
|
||||||
|
|
||||||
tenants = TenantService.get_joined_tenants_by_user_id(tenant_id)
|
tenants = TenantService.get_joined_tenants_by_user_id(tenant_id)
|
||||||
kbs = KnowledgebaseService.get_list(
|
kbs, total = KnowledgebaseService.get_list(
|
||||||
[m["tenant_id"] for m in tenants],
|
[m["tenant_id"] for m in tenants],
|
||||||
tenant_id,
|
tenant_id,
|
||||||
args["page"],
|
args["page"],
|
||||||
@ -475,7 +475,7 @@ def list_datasets(tenant_id):
|
|||||||
response_data_list = []
|
response_data_list = []
|
||||||
for kb in kbs:
|
for kb in kbs:
|
||||||
response_data_list.append(remap_dictionary_keys(kb))
|
response_data_list.append(remap_dictionary_keys(kb))
|
||||||
return get_result(data=response_data_list)
|
return get_result(data=response_data_list, total=total)
|
||||||
except OperationalError as e:
|
except OperationalError as e:
|
||||||
logging.exception(e)
|
logging.exception(e)
|
||||||
return get_error_data_result(message="Database operation failed")
|
return get_error_data_result(message="Database operation failed")
|
||||||
|
|||||||
@ -379,6 +379,7 @@ class KnowledgebaseService(CommonService):
|
|||||||
# name: Optional name filter
|
# name: Optional name filter
|
||||||
# Returns:
|
# Returns:
|
||||||
# List of knowledge bases
|
# List of knowledge bases
|
||||||
|
# Total count of knowledge bases
|
||||||
kbs = cls.model.select()
|
kbs = cls.model.select()
|
||||||
if id:
|
if id:
|
||||||
kbs = kbs.where(cls.model.id == id)
|
kbs = kbs.where(cls.model.id == id)
|
||||||
@ -390,6 +391,7 @@ class KnowledgebaseService(CommonService):
|
|||||||
cls.model.tenant_id == user_id))
|
cls.model.tenant_id == user_id))
|
||||||
& (cls.model.status == StatusEnum.VALID.value)
|
& (cls.model.status == StatusEnum.VALID.value)
|
||||||
)
|
)
|
||||||
|
|
||||||
if desc:
|
if desc:
|
||||||
kbs = kbs.order_by(cls.model.getter_by(orderby).desc())
|
kbs = kbs.order_by(cls.model.getter_by(orderby).desc())
|
||||||
else:
|
else:
|
||||||
@ -397,7 +399,7 @@ class KnowledgebaseService(CommonService):
|
|||||||
|
|
||||||
kbs = kbs.paginate(page_number, items_per_page)
|
kbs = kbs.paginate(page_number, items_per_page)
|
||||||
|
|
||||||
return list(kbs.dicts())
|
return list(kbs.dicts()), kbs.count()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@DB.connection_context()
|
@DB.connection_context()
|
||||||
|
|||||||
@ -362,16 +362,27 @@ def token_required(func):
|
|||||||
return decorated_function
|
return decorated_function
|
||||||
|
|
||||||
|
|
||||||
def get_result(code: settings.RetCode = settings.RetCode.SUCCESS, message="", data=None):
|
def get_result(code=settings.RetCode.SUCCESS, message="", data=None, total=None):
|
||||||
if code == 0:
|
"""
|
||||||
if data is not None:
|
Standard API response format:
|
||||||
response = {"code": code, "data": data}
|
{
|
||||||
else:
|
"code": 0,
|
||||||
response = {"code": code}
|
"data": [...], # List or object, backward compatible
|
||||||
else:
|
"total": 47, # Optional field for pagination
|
||||||
response = {"code": code, "message": message}
|
"message": "..." # Error or status message
|
||||||
return jsonify(response)
|
}
|
||||||
|
"""
|
||||||
|
response = {"code": code}
|
||||||
|
|
||||||
|
if code == settings.RetCode.SUCCESS:
|
||||||
|
if data is not None:
|
||||||
|
response["data"] = data
|
||||||
|
if total is not None:
|
||||||
|
response["total_datasets"] = total
|
||||||
|
else:
|
||||||
|
response["message"] = message or "Error"
|
||||||
|
|
||||||
|
return jsonify(response)
|
||||||
|
|
||||||
def get_error_data_result(
|
def get_error_data_result(
|
||||||
message="Sorry! Data missing!",
|
message="Sorry! Data missing!",
|
||||||
|
|||||||
@ -830,7 +830,8 @@ Success:
|
|||||||
"update_time": 1728533243536,
|
"update_time": 1728533243536,
|
||||||
"vector_similarity_weight": 0.3
|
"vector_similarity_weight": 0.3
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"total": 1
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -1280,7 +1281,7 @@ Success:
|
|||||||
"update_time": 1728897061948
|
"update_time": 1728897061948
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"total": 1
|
"total_datasets": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user