(20250614) Cred and Data ids can now be listed.

This commit is contained in:
2025-06-14 13:15:20 +05:30
parent 2da84bf05e
commit c754bb6a97
+72 -1
View File
@@ -349,7 +349,7 @@ async def update_cred(
# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
@cred_and_data_bp.route("/<json_type>/delete", methods = ["POST", "GET"]) @cred_and_data_bp.route("/<json_type>/delete", methods = ["DELETE"])
@set_api_version(api_version = "2.1.0") @set_api_version(api_version = "2.1.0")
@read_input(sanitize_headers = True, sanitize_data = True) @read_input(sanitize_headers = True, sanitize_data = True)
@log_request_to_mongo( @log_request_to_mongo(
@@ -401,6 +401,77 @@ async def delete_data(
else: return ResponseModel(status_code = StatusCodes.FAILED) else: return ResponseModel(status_code = StatusCodes.FAILED)
# ---------------------------------------------------------------------------------------------------------------------
@cred_and_data_bp.route("/<json_type>/ids", methods = ["GET"])
@set_api_version(api_version = "2.1.0")
@read_input(sanitize_headers = True, sanitize_data = True)
@log_request_to_mongo(
attr_name = "mongo",
project = "internal",
log_type = "credData",
operation = "listIds",
log_input = True,
log_output = True
)
@should_not_be_under_maintenance(attr_name = "is_under_maintenance")
@only_whitelisted_ips(attr_name = "whitelisted_ips")
@validate_input(header_validator = None)
@handle_cancelled_request()
async def list_all_ids(
json_type: str = None,
inbound_headers: dict = None,
inbound_data: dict = None,
inbound_files: dict = None,
**kwargs
):
"""
To list all the ids for cred or data.
:param json_type: The choice from one of the fields of 'JSON_TYPE_INFO'.
:param inbound_headers: auto-extracted by the decorators.
:param inbound_data: auto-extracted by the decorators.
:param inbound_files: auto-extracted by the decorators.
:param kwargs: Any number of extra inputs supplied by the decorators.
:return: A standard response structure.
"""
# If an invalid choice was made:
if json_type not in JSON_TYPE_INFO.keys():
return ResponseModel(
status_code = StatusCodes.FAILED,
message = f"invalid path '{json_type}'",
http_code = HttpCodes.BAD_REQUEST
)
# Try to enlist all the ids:
data_json = await current_app.mongo.find_many(
collection = JSON_TYPE_INFO[json_type]["collection"],
filter = {},
limit = 1_000,
projection = {"_id": False, "scriptId": True, "desc": True},
sort = {"_id": 1},
raise_exception = True
)
# In case no result was found:
if not data_json:
return ResponseModel(
status_code = StatusCodes.FAILED,
http_code = HttpCodes.INTERNAL_SERVER_ERROR,
message = "invalid script id"
)
# Successfully retrieved:
return ResponseModel(
status_code = StatusCodes.OK,
http_code = HttpCodes.SUCCESS,
message = f"found {len(data_json)} script id(s)",
data = data_json
)
# ***************************************************************************************************************** # *****************************************************************************************************************
# ***** **** # ***** ****
# *** MAIN PROGRAM *** # *** MAIN PROGRAM ***