U
    [MÕhí  ã                   @   sr   d dl mZ d dlmZmZ d dlmZ d dlZd dlmZ e 	e
¡Zdeeedœdd	„Zeeeed
œdd„ZdS )é    )ÚSession)Úand_Úor_)ÚActivityRecordN)Údatetimeé   )ÚdbÚactivity_dataÚuser_idc                 C   sF   zü|   t¡ ttj|ktj| d¡ktj| d¡ktj| d¡ktj	| d¡kƒ¡ 
¡ }|rd|W S t|| d¡| d¡| d¡| d¡| d¡| d¡| d	¡| d
¡| d¡| d¡| d¡| d¡| d¡| d¡d}|  |¡ |  ¡  |  |¡ |W S  tk
r@ } z"t d|› ¡ |  ¡  W Y ¢dS d}~X Y nX dS )z8Safely create activity record with proper error handlingÚapplication_nameÚwindow_titleÚactivity_timestampÚdurationÚdeveloper_idÚdeveloper_nameÚdeveloper_hostnameÚ	device_idÚurlÚ	file_pathÚdetailed_activityÚcategoryÚbucket_name)r
   r   r   r   r   r   r   r   r   r   r   r   Ú	timestampr   r   z!Failed to cache activity safely: N)Úqueryr   Úfilterr   r
   r   Úgetr   r   r   ÚfirstÚaddZcommitZrefreshÚ	ExceptionÚloggerZwarningZrollback)r   r	   r
   ÚexistingZactivity_recordÚe© r"   ú./safe_activity_caching.pyÚsafe_create_activity_record
   sJ    
ûÿ
ñ

r$   )r   r   Ú
start_dateÚend_datec              
   C   sŽ   zN|   t¡ tttj|ktj|kƒtj|ktj|kƒ¡ tj	 
¡ ¡ d¡ ¡ W S  tk
rˆ } zt d|› ¡ g  W Y ¢S d}~X Y nX dS )z-Get activity records for a specific developeriè  z Error getting activity records: N)r   r   r   r   r   r   r   r   Zorder_byr   ZdescÚlimitÚallr   r   Úerror)r   r   r%   r&   r!   r"   r"   r#   Ú"get_activity_records_for_developer;   s$    
þúÿ	÷	÷
r*   )r   )Zsqlalchemy.ormr   Z
sqlalchemyr   r   Zmodelsr   Zloggingr   Z	getLoggerÚ__name__r   ÚdictÚintr$   Ústrr*   r"   r"   r"   r#   Ú<module>   s   
1