U
    ؠh                     @   sX  d dl mZmZ d dlZd dlmZ d dlmZmZ e  edZ	e	seddZ
edd	Zed
dZeddZeddZde de de
 de de 
Z	ee	Zed dZdZdZede de  ede  e 8Zed eeddeiZe ZerNed eD ]$\ZZede d e d! eZq&n:ed" ed# eed$ZeD ]\Zed%e  qped&e de d' eed(eed)Ze Zer
ed* eD ]8\ZZZ e re nd Z!ed+e d,e d-e!d.d/ qn6ed0 eed1Ze" \Z#Z$ed2e# de$  er"ed3 zeed4eeed5Ze Zered6e%e d7 e&edd8 D ]:\Z'Z(ed9e'd:  d,e(d:  d;e(d< dd=  d' qned> W n> e)k
r  Z* zed?e+e*  ed@ W 5 dZ*[*X Y nX W 5 Q R X edA edB edC edD edE dS )F    )create_enginetextN)load_dotenv)datetimedateDATABASE_URLDB_HOSTZ	localhostDB_PORTZ5432DB_NAMEZtimesheet_dbDB_USERZpostgresDB_PASSWORD zpostgresql://:@/z%=== Debugging Activity API Error ===
z
2025-09-30z
2025-10-08ZriddhidhakharazDate range: z to zDeveloper: z$
1. Checking developer variations...z
        SELECT DISTINCT CAST(developer_id AS VARCHAR) as dev_id, COUNT(*) as count
        FROM activity_records
        WHERE LOWER(CAST(developer_id AS VARCHAR)) = LOWER(:dev_id)
        GROUP BY developer_id
    dev_idz   Found developer(s):z   - 'z' (z	 records)u      ❌ Developer not found!z
   All developers in database:z
            SELECT DISTINCT CAST(developer_id AS VARCHAR) as dev_id
            FROM activity_records
            ORDER BY 1
        z   - z 
2. Checking data in date range z...a,  
        SELECT 
            DATE(timestamp) as activity_date,
            COUNT(*) as records,
            SUM(duration) / 3600 as hours
        FROM activity_records
        WHERE DATE(timestamp) BETWEEN :start_date AND :end_date
        GROUP BY DATE(timestamp)
        ORDER BY activity_date
    )
start_dateend_datez   Data found:z   z: z
 records, z.1fz hoursu"      ❌ No data in this date range!zi
            SELECT MIN(DATE(timestamp)), MAX(DATE(timestamp))
            FROM activity_records
        z
   Actual data range: z
3. Testing activity query...a.  
                SELECT 
                    CAST(developer_id AS VARCHAR) as dev_id,
                    application_name,
                    window_title,
                    duration,
                    timestamp,
                    category
                FROM activity_records
                WHERE LOWER(CAST(developer_id AS VARCHAR)) = LOWER(:dev_id)
                AND DATE(timestamp) BETWEEN :start_date AND :end_date
                AND application_name IS NOT NULL
                ORDER BY timestamp DESC
                LIMIT 10
            )r   r   r   u      ✓ Query successful, found z records   z
   Sample    z -    2   u/      ⚠️ Query successful but no records foundu      ❌ Query failed: z-   This might be the cause of your 500 error!z
4. LIKELY ISSUES:zZ   1. Case sensitivity: Database might have 'RiddhiDhakhara' but API uses 'riddhidhakhara'zA   2. Date range: Your data might be outside Sep 30 - Oct 8, 2025zA   3. Missing columns: application_name or category might be NULLz.   4. Database connection issues in production),Z
sqlalchemyr   r   osZdotenvr   r   r   getenvr   r   r	   r
   r   r   Zengineprintr   r   Zdeveloper_idZconnectZconnZexecuteresultZfetchallZ
developersZdevcountZactual_dev_idZdatesZact_dateZrecordsZhoursZ	hours_valZfetchoneZmin_dateZmax_datelen	enumerateirecord	Exceptionestr r$   r$   ./debug_api_error.py<module>   s   
"



	$
6$