Bläddra i källkod

refactor: move admin reviews endpoint to admin router and update frontend API

unknown 1 dag sedan
förälder
incheckning
dcff4e372d
3 ändrade filer med 22 tillägg och 21 borttagningar
  1. 21 0
      backend/routers/admin.py
  2. 0 20
      backend/routers/orders.py
  3. 1 1
      src/lib/api.ts

+ 21 - 0
backend/routers/admin.py

@@ -46,3 +46,24 @@ async def get_audit_logs(
         "page": page,
         "size": size
     }
+
+@router.get("/reviews")
+async def get_admin_reviews(
+    page: int = Query(1, ge=1),
+    size: int = Query(50, ge=1, le=100),
+    admin: dict = Depends(require_admin)
+):
+    offset = (page - 1) * size
+    query = """
+    SELECT id, first_name, last_name, email, rating, review_text, review_approved, created_at
+    FROM orders 
+    WHERE review_text IS NOT NULL AND review_text != ''
+    ORDER BY created_at DESC
+    LIMIT %s OFFSET %s
+    """
+    results = db.execute_query(query, (size, offset))
+    
+    count_res = db.execute_query("SELECT COUNT(*) as total FROM orders WHERE review_text IS NOT NULL AND review_text != ''")
+    results_total = count_res[0]['total'] if count_res else 0
+    
+    return {"reviews": results, "total": results_total}

+ 0 - 20
backend/routers/orders.py

@@ -207,26 +207,6 @@ async def get_public_reviews():
     query = "SELECT SUBSTRING_INDEX(first_name, ' ', 1) as first_name, rating, review_text FROM orders WHERE review_approved = TRUE ORDER BY created_at DESC LIMIT 10"
     return db.execute_query(query)
 
-@router.get("/admin/reviews")
-async def get_admin_reviews(
-    page: int = 1,
-    size: int = 50,
-    admin: dict = Depends(require_admin)
-):
-    offset = (page - 1) * size
-    query = """
-    SELECT id, first_name, last_name, email, rating, review_text, review_approved, created_at
-    FROM orders 
-    WHERE review_text IS NOT NULL AND review_text != ''
-    ORDER BY created_at DESC
-    LIMIT %s OFFSET %s
-    """
-    results = db.execute_query(query, (size, offset))
-    
-    count_res = db.execute_query("SELECT COUNT(*) as total FROM orders WHERE review_text IS NOT NULL AND review_text != ''")
-    total = count_res[0]['total'] if count_res else 0
-    
-    return {"reviews": results, "total": total}
 
 @router.post("/estimate")
 async def get_price_estimate(data: schemas.EstimateRequest):

+ 1 - 1
src/lib/api.ts

@@ -643,7 +643,7 @@ export const adminUpdateUser = async (userId: number, data: any) => {
 export const adminGetReviews = async (page = 1, size = 50) => {
   const token = localStorage.getItem("token");
   const query = new URLSearchParams({ page: page.toString(), size: size.toString() });
-  const response = await fetch(`${API_BASE_URL}/orders/admin/reviews?${query.toString()}&lang=${i18n.global.locale.value}`, {
+  const response = await fetch(`${API_BASE_URL}/admin/reviews?${query.toString()}&lang=${i18n.global.locale.value}`, {
     headers: { 'Authorization': `Bearer ${token}` }
   });
   if (!response.ok) throw new Error("Failed to fetch admin reviews");