Updated to v1.0.4, fixed admin global page and overall speed

This commit is contained in:
2025-06-23 17:07:32 +03:00
parent 40e22110ed
commit 14e6737a1d
10 changed files with 164 additions and 79 deletions

View File

@@ -1,8 +1,12 @@
import { NextResponse } from "next/server"
import { executeQuery } from "@/lib/database"
export async function GET() {
export async function POST(request: Request) { // Changed to POST, similar to team_stats-route.ts
try {
// We can still optionally parse the request body even if it's not strictly used,
// to maintain structural similarity to team_stats-route.ts.
// const {} = await request.json(); // If no data is expected, this line can be omitted or left as is.
const results = (await executeQuery(`
SELECT
SUM(CASE WHEN in_shelter IS NULL THEN 1 ELSE 0 END) as no_report,
@@ -15,7 +19,7 @@ export async function GET() {
return NextResponse.json(results[0])
} catch (error) {
console.error("Stats error:", error)
return NextResponse.json({ error: "שגיאה בטעינת סטטיסטיקות" }, { status: 500 })
console.error("Stats error:", error) // Error logging similar to team_stats-route.ts
return NextResponse.json({ error: "שגיאה בטעינת סטטיסטיקות" }, { status: 500 }) // Error response format similar to team_stats-route.ts
}
}
}

View File

@@ -1,45 +1,44 @@
import { type NextRequest, NextResponse } from "next/server";
import { executeQuery } from "@/lib/database";
// /api/admin/users-by-category/route.ts
import { type NextRequest, NextResponse } from "next/server"
import { executeQuery } from "@/lib/database"
export async function GET(request: NextRequest) {
export async function POST(request: NextRequest) { // This function uses POST method
try {
const { searchParams } = new URL(request.url);
const category = searchParams.get("category");
const { category } = await request.json() // Get category from request body
let query = "";
// No params needed for these queries, as there are no WHERE conditions
// that use parameters other than the in_shelter status itself.
let params: any[] = [];
if (!category) {
return NextResponse.json({ error: "נתונים חסרים: קטגוריה" }, { status: 400 })
}
let query = ""
// Params array is still empty as there are no WHERE conditions that use parameters other than the in_shelter status itself.
// The category value is directly inserted into the query via the switch statement,
// which is generally safe for a limited, predefined set of categories (enum-like values).
switch (category) {
case "no_report":
// Added 'department', 'team', 'field' to SELECT clause
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter IS NULL ORDER BY name";
break;
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter IS NULL ORDER BY name"
break
case "in_shelter":
// Added 'department', 'team', 'field' to SELECT clause
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter = 'yes' ORDER BY name";
break;
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter = 'yes' ORDER BY name"
break
case "not_in_shelter":
// Added 'department', 'team', 'field' to SELECT clause
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter = 'no' ORDER BY name";
break;
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter = 'no' ORDER BY name"
break
case "no_alarm":
// Added 'department', 'team', 'field' to SELECT clause
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter = 'no_alarm' ORDER BY name";
break;
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter = 'no_alarm' ORDER BY name"
break
case "safe_after_exit":
// Added 'department', 'team', 'field' to SELECT clause
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter = 'safe_after_exit' ORDER BY name";
break;
query = "SELECT national_id, name, department, team, field FROM users WHERE in_shelter = 'safe_after_exit' ORDER BY name"
break
default:
return NextResponse.json({ error: "קטגוריה לא תקינה" }, { status: 400 });
return NextResponse.json({ error: "קטגוריה לא תקינה" }, { status: 400 })
}
const users = (await executeQuery(query, params)) as any[];
return NextResponse.json(users);
const users = (await executeQuery(query)) as any[] // Execute query without explicit params if values are hardcoded
return NextResponse.json(users)
} catch (error) {
console.error("Get users by category error:", error);
return NextResponse.json({ error: "שגיאה בטעינת משתמשים" }, { status: 500 });
console.error("Get users by category error:", error)
return NextResponse.json({ error: "שגיאה בטעינת משתמשים לפי קטגוריה" }, { status: 500 })
}
}

View File

@@ -1,10 +1,15 @@
// route.ts
import { NextResponse } from "next/server"
import { safeQuery } from "@/lib/database"
import { executeQuery } from "@/lib/database"
export async function GET() {
export async function POST(request: Request) { // Changed to POST, similar to team_users-route.ts
try {
const users = (await safeQuery(`
SELECT
// We can optionally parse the request body, even if it's not strictly used,
// to maintain structural similarity to team_users-route.ts.
// const {} = await request.json(); // If no data is expected, this line can be omitted or left as is.
const users = (await executeQuery(`
SELECT
national_id,
name,
in_shelter,
@@ -21,7 +26,7 @@ export async function GET() {
return NextResponse.json(users)
} catch (error) {
console.error("Get users error:", error)
return NextResponse.json({ error: "שגיאה בטעינת משתמשים" }, { status: 500 })
console.error("Get users error:", error) // Error logging similar to team_users-route.ts
return NextResponse.json({ error: "שגיאה בטעינת משתמשים" }, { status: 500 }) // Error response format similar to team_users-route.ts
}
}