Commit b85f7c70 authored by Guillermo Sanz López's avatar Guillermo Sanz López
Browse files

add search invokers function

parent ec76f023
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -28,6 +28,31 @@ def get_invokersPages():
    page_size = request.args.get('pageSize', default=10, type=int)
    return operations.get_invokersPages(page, page_size)

# @cross_origin()
# @backoffice_routes.route("/invokers/search", methods=["GET"])
# @jwt_required()
# def search_invokers():
#     search = request.args.get('search', default=1, type=str)
#     page = request.args.get('page', default=1, type=int)
#     page_size = request.args.get('pageSize', default=10, type=int)
#     return operations.search_invokers(search, page, page_size)

@cross_origin()
@backoffice_routes.route("/invokers/search", methods=["GET"])
@jwt_required()
def search_invokers():
    try:
        search_term = request.args.get('searchTerm', default='', type=str)
        page = request.args.get('page', default=1, type=int)
        page_size = request.args.get('pageSize', default=10, type=int)

        response, status_code = operations.search_invokers(search_term, page, page_size)

        return jsonify(response), status_code
    except Exception as e:
        return jsonify({"error": str(e)}), 500


@cross_origin()
@backoffice_routes.route("/resources/numInvokers", methods=["GET"])
@jwt_required()
+38 −8
Original line number Diff line number Diff line
@@ -62,14 +62,6 @@ class Operations:
            invokers_cursor = self.db.get_col_by_name(self.db.invokers).find({}, {"_id": 0, "onboarding_information": 0, "request_test_notification": 0, "supported_features": 0, "websock_notif_config": 0}).skip(start_index).limit(page_size)
            invokers = list(invokers_cursor)

            # Procesar los invocadores si es necesario
            # users = self.retrieve_users()
            # for invoker in invokers:
            #     invoker_aux = copy.deepcopy(invoker)
            #     for user in users:
            #         if invoker["api_invoker_id"] in user["list_invokers"]:
            #             invoker_aux["username"] = user["username"]

            users = self.retrieve_users()
            json_invokers = []
            for invoker in invokers:
@@ -97,6 +89,44 @@ class Operations:
            return "Error when retrieving invoker list: ", e
        

    def search_invokers(self, search_term, page, page_size):
        try:
            # Obtener la lista completa de invocadores
            invokers = self.retrieve_invokers()

            # Filtrar los invocadores por el término de búsqueda en los campos username y api_invoker_id
            filtered_invokers = []
            for invoker in invokers:
                if invoker["api_invoker_id"] == search_term:
                    filtered_invokers.append(invoker)
                if invoker["username"] == search_term:
                    filtered_invokers.append(invoker)


            # filtered_invokers = [invoker for invoker in invokers if search_term.lower() in invoker.get("username", "").lower() or search_term.lower() in invoker.get("api_invoker_id", "").lower()]

            # Calcular el número total de páginas
            total_pages = (len(filtered_invokers) + page_size - 1) // page_size

            # Obtener los invocadores para la página actual
            start_index = (page - 1) * page_size
            end_index = start_index + page_size
            paginated_invokers = filtered_invokers[start_index:end_index]

            # Construir el objeto de respuesta
            response = {
                "data": filtered_invokers,
                "total": len(filtered_invokers),
                "totalPages": total_pages
            }

            return response, 200
        except Exception as e:
            return "Error when searching invokers: ", e




    def get_invoker_security_context(self, invoker_id):
        security_context_col = self.db.get_col_by_name(self.db.security_context)
        apis_col = self.db.get_col_by_name(self.db.services)