feat: implement core backend API structure and frontend service layer for case management and authentication
This commit is contained in:
51
backend/routes/dashboard.py
Normal file
51
backend/routes/dashboard.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from flask import Blueprint, jsonify
|
||||
from ..db import get_db_connection, release_db_connection
|
||||
from ..middleware import token_required
|
||||
|
||||
dashboard_blueprint = Blueprint('dashboard', __name__)
|
||||
|
||||
@dashboard_blueprint.route('/dashboard/stats', methods=['GET'])
|
||||
@token_required
|
||||
def get_stats(current_user_id):
|
||||
conn = get_db_connection()
|
||||
cur = conn.cursor()
|
||||
|
||||
# 1. Total cases
|
||||
cur.execute("SELECT COUNT(*) FROM cases WHERE user_id = %s", (current_user_id,))
|
||||
total_cases = cur.fetchone()[0]
|
||||
|
||||
# 2. Cases by status
|
||||
cur.execute("SELECT status, COUNT(*) FROM cases WHERE user_id = %s GROUP BY status", (current_user_id,))
|
||||
status_rows = cur.fetchall()
|
||||
cases_by_status = {row[0]: row[1] for row in status_rows}
|
||||
|
||||
# 3. Total active integrations
|
||||
cur.execute("SELECT COUNT(*) FROM credentials WHERE user_id = %s", (current_user_id,))
|
||||
total_integrations = cur.fetchone()[0]
|
||||
|
||||
# 4. List of connected platforms
|
||||
cur.execute("SELECT platform FROM credentials WHERE user_id = %s", (current_user_id,))
|
||||
platforms = [row[0] for row in cur.fetchall()]
|
||||
|
||||
# 5. Recent activity (last 5 cases)
|
||||
cur.execute("SELECT id, platform, violator_article, status, created_at FROM cases WHERE user_id = %s ORDER BY created_at DESC LIMIT 5", (current_user_id,))
|
||||
recent_rows = cur.fetchall()
|
||||
recent_activity = [
|
||||
{
|
||||
"id": r[0],
|
||||
"platform": r[1],
|
||||
"article": r[2],
|
||||
"status": r[3],
|
||||
"date": r[4].isoformat() if r[4] else None
|
||||
} for r in recent_rows
|
||||
]
|
||||
|
||||
release_db_connection(conn)
|
||||
|
||||
return jsonify({
|
||||
"total_cases": total_cases,
|
||||
"cases_by_status": cases_by_status,
|
||||
"total_integrations": total_integrations,
|
||||
"platforms": platforms,
|
||||
"recent_activity": recent_activity
|
||||
})
|
||||
Reference in New Issue
Block a user