o
    Ah                     @   s   d dl m Z  d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ dZded	ejd
efddZdededee dee d	ejd
ee fddZdeded	ejd
ee fddZdS )    )datetime)
CollectionReturnDocument)database)AuditLogCreate)str_to_objectid)OptionalList
audit_logs	audit_logdbreturnc                    sF   |t  }|  }t |d< ||}t|j|d< |d |d< |S )zG
    Insert a new audit log record into the audit_logs collection.
    	timestamp_idaudit_id)COLLECTION_NAMEdictr   utcnow
insert_onestrinserted_id)r   r   audit_collectionlog_dataresult r   6/var/www/html/moveengine/app/v1/services/saas/audit.pycreate_audit_log_service
   s   
r   skiplimit
account_iduser_idc           
         s   |t  }i }|r||d< |r||d< ||| |dd}g }|2 z3 dH W }	t|	d |	d< |	d |	d< ||	 q&6 |S )z
    Retrieve a paginated list of audit logs.
    If account_id or user_id is provided, filters are applied; otherwise, global logs are returned.
    r   r    r   Nr   r   r   findr   r   sortr   append)
r   r   r   r    r   r   querycursorlogsdocr   r   r   list_audit_logs_service   s   r*   c                    sj   |t  }|i | |dd}g }|2 z3 dH W }t|d |d< |d |d< || q6 |S )zD
    Retrieve a paginated list of all audit logs (global view).
    r   r!   Nr   r   r"   )r   r   r   r   r'   r(   r)   r   r   r   list_global_audit_logs_service)   s   r+   N)r   pymongo.collectionr   r   app.dbr   app.v1.models.saas.auditmodelr   app.v1.libraries.objectr   typingr   r	   r   MongoDBr   r   intr   r*   r+   r   r   r   r   <module>   s    0$