o
    P=Ki                     @   sh   d dl mZ ddlmZ d dlZd dlZd dlmZmZm	Z	 e
eZdd Zejdd	dddZdS )    )
celery_app   )DB_PATHN)datetime	timedeltatimezonec              
   C   s"  t tjt| d  }td| d z]t	t
M}| }|d|f | d }|dkrZ|d|f |  td| d |d	krYtd
 |d td ntd |W  d   W S 1 slw   Y  W dS  ty } ztjd| dd W Y d}~dS d}~ww )z.
    Core logic for cleaning stale deals.
    )hoursz5Janitor: Starting cleanup. Deleting deals older than z...z2SELECT COUNT(*) FROM deals WHERE last_seen_utc < ?r   z)DELETE FROM deals WHERE last_seen_utc < ?zJanitor: Successfully deleted z stale deals.i  z.Janitor: Performing VACUUM to reclaim space...VACUUMzJanitor: VACUUM complete.zJanitor: No stale deals found.NzJanitor failed: T)exc_info)r   nowr   utcr   	isoformatloggerinfosqlite3connectr   cursorexecutefetchonecommit	Exceptionerror)grace_period_hourscutoff_timeconnr   to_delete_counte r   ./var/www/agentarbitrage/keepa_deals/janitor.py_clean_stale_deals_logic	   s0   



(r   z%keepa_deals.janitor.clean_stale_deals)nameH   c                 C   s   t | S )z
    Deletes deals that haven't been seen/updated for a specified period (default 72 hours).
    This helps keep the database size manageable and removes "dead" deals that are no longer
    appearing in Keepa results.
    )r   )r   r   r   r   clean_stale_deals+   s   r"   )r!   )workerr   celerydb_utilsr   r   loggingr   r   r   	getLogger__name__r   r   taskr"   r   r   r   r   <module>   s    

"