AnlaAnla пре 3 недеља
родитељ
комит
957e0c56fb
3 измењених фајлова са 10 додато и 4 уклоњено
  1. 2 1
      Test/test01.py
  2. 4 3
      app/api/cards.py
  3. 4 0
      app/crud/crud_card.py

+ 2 - 1
Test/test01.py

@@ -35,7 +35,8 @@ def send(url):
 
 if __name__ == '__main__':
     # base_url = 'http://127.0.0.1:7745/api/cards/query/1'
-    base_url = 'http://127.0.0.1:7745/api/cards/query_next/14'
+    # base_url = 'http://127.0.0.1:7745/api/cards/query_next/14'
 
     # base_url = 'http://192.168.31.243:7745/api/cards/query/6'
+    base_url = 'http://192.168.77.78:7745/api/cards/query_next/3'
     send(base_url)

+ 4 - 3
app/api/cards.py

@@ -70,7 +70,7 @@ def get_next_card_details(id: int, db_conn: PooledMySQLConnection = db_dependenc
             next_card_row = cursor.fetchone()
 
             if not next_card_row:
-                raise HTTPException(status_code=200, detail=f"当前为最后一张卡")
+                raise HTTPException(status_code=200, detail=f"没有下一张")
 
             next_card_id = next_card_row['id']
             # 获取单个卡牌的完整信息
@@ -87,7 +87,8 @@ def get_next_card_details(id: int, db_conn: PooledMySQLConnection = db_dependenc
 
 
 @router.get("/card_list", response_model=List[CardListDetailResponse], summary="获取卡牌列表(支持筛选和排序)")
-def list_cards_detailed(  # MODIFIED
+def list_cards_detailed(
+        card_id: Optional[int] = Query(None, description="筛选条件:卡牌ID (精确匹配)"),
         card_name: Optional[str] = Query(None, description="筛选条件:卡牌名称 (模糊匹配)"),
         card_type: Optional[CardType] = Query(None, description="筛选条件:卡牌类型"),
         sort_by: SortBy = Query(SortBy.updated_at, description="排序字段"),
@@ -99,7 +100,7 @@ def list_cards_detailed(  # MODIFIED
     """获取卡牌的基础信息列表,支持按名称、类型筛选,以及多字段排序和分页。"""
     try:
         cards_with_images = crud_card.get_card_list_with_images(
-            db_conn, card_name, card_type, sort_by, sort_order, skip, limit
+            db_conn, card_id, card_name, card_type, sort_by, sort_order, skip, limit
         )
         card_list = [CardListDetailResponse.model_validate(c) for c in cards_with_images]
         logger.info(card_list)

+ 4 - 0
app/crud/crud_card.py

@@ -75,6 +75,7 @@ def get_card_with_details(db_conn: PooledMySQLConnection, card_id: int) -> Optio
 
 def get_card_list_with_images(
         db_conn: PooledMySQLConnection,
+        card_id: Optional[int],
         card_name: Optional[str],
         card_type: Optional[CardType],
         sort_by: SortBy,
@@ -89,6 +90,9 @@ def get_card_list_with_images(
         conditions = []
         params = []
 
+        if card_id:
+            conditions.append("id = %s")
+            params.append(card_id)
         if card_name:
             conditions.append("card_name LIKE %s")
             params.append(f"%{card_name}%")