Преглед на файлове

Update api_server: get_module_list support paging

StrayWarrior преди 11 часа
родител
ревизия
40504c97a7
променени са 1 файла, в които са добавени 28 реда и са изтрити 16 реда
  1. 28 16
      pqai_agent_server/api_server.py

+ 28 - 16
pqai_agent_server/api_server.py

@@ -492,25 +492,37 @@ def delete_native_agent_configuration():
 @app.route("/api/getModuleList", methods=["GET"])
 def get_module_list():
     """
-    获取所有的模块列表
+    获取所有的模块列表,支持分页查询
     :return:
     """
+    page = request.args.get('page', 1)
+    page_size = request.args.get('page_size', 50)
+    try:
+        page = int(page)
+        page_size = int(page_size)
+    except Exception as e:
+        return wrap_response(400, msg="Invalid parameter: {}".format(e))
+
+    offset = (page - 1) * page_size
     with app.session_maker() as session:
-        query = session.query(ServiceModule) \
-            .filter(ServiceModule.is_delete == 0)
-        data = query.all()
-    ret_data = [
-        {
-            'id': module.id,
-            'name': module.name,
-            'display_name': module.display_name,
-            'default_agent_type': module.default_agent_type,
-            'default_agent_id': module.default_agent_id,
-            'create_time': module.create_time.strftime('%Y-%m-%d %H:%M:%S'),
-            'update_time': module.update_time.strftime('%Y-%m-%d %H:%M:%S')
-        }
-        for module in data
-    ]
+        query = session.query(ServiceModule).filter(ServiceModule.is_delete == 0)
+        total = query.count()
+        modules = query.offset(offset).limit(page_size).all()
+    ret_data = {
+        'total': total,
+        'module_list': [
+            {
+                'id': module.id,
+                'name': module.name,
+                'display_name': module.display_name,
+                'default_agent_type': module.default_agent_type,
+                'default_agent_id': module.default_agent_id,
+                'create_time': module.create_time.strftime('%Y-%m-%d %H:%M:%S'),
+                'update_time': module.update_time.strftime('%Y-%m-%d %H:%M:%S')
+            }
+            for module in modules
+        ]
+    }
     return wrap_response(200, data=ret_data)
 
 @app.route("/api/getModuleConfiguration", methods=["GET"])