HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/awscli/customizations/history/__pycache__/db.cpython-310.pyc
o

.&�a1$�@s�ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddlm
Z
ddlmZe�e
�ZGdd�de�ZGdd	�d	ej�ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZGdd�de	�ZdS)�N)�collections_abc)�BaseHistoryHandler)�sqlite3)�binary_typec@s^eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
edd��Zej
dd��ZdS)�DatabaseConnectionz�
        CREATE TABLE IF NOT EXISTS records (
          id TEXT,
          request_id TEXT,
          source TEXT,
          event_type TEXT,
          timestamp INTEGER,
          payload TEXT
        )zPRAGMA journal_mode=WALcCstj|ddd�|_|��dS)NF)�check_same_thread�isolation_level)r�connect�_connection�_ensure_database_setup)�self�db_filename�r�B/usr/lib/python3/dist-packages/awscli/customizations/history/db.py�__init__*s�zDatabaseConnection.__init__cC�|j��dS�N�r
�close�rrrrr/�zDatabaseConnection.closecGs|jj|g|�R�Sr)r
�execute)r�query�
parametersrrrr2szDatabaseConnection.executecCs|��|��dSr)�_create_record_table�_try_to_enable_walrrrrr5sz)DatabaseConnection._ensure_database_setupcCs|�|j�dSr)r�
_CREATE_TABLErrrrr9sz'DatabaseConnection._create_record_tablecCs4z	|�|j�WdStjyt�d�YdSw)NzFailed to enable sqlite WAL.)r�_ENABLE_WALr�Error�LOG�debugrrrrr<s
�z%DatabaseConnection._try_to_enable_walcCs|jjSr�r
�row_factoryrrrrr"DszDatabaseConnection.row_factorycCs||j_dSrr!)rr"rrrr"HsN)�__name__�
__module__�__qualname__rrrrrrrr�propertyr"�setterrrrrrs	
rcsDeZdZdd�Zdd�Zdd�Zdd�Z�fd	d
�Zdd�Z�Z	S)
�PayloadSerializercCst|�Sr)�dict�r�objrrr�_encode_mutable_mappingN�z)PayloadSerializer._encode_mutable_mappingcCs|��Sr)�	isoformatr*rrr�_encode_datetimeQr-z"PayloadSerializer._encode_datetimecCs*z|�d�}W|Styd}Y|Sw)Nzutf-8z<Byte sequence>)�decode�UnicodeDecodeErrorr*rrr�_try_decode_bytesTs��z#PayloadSerializer._try_decode_bytescsdt|t�r��|�}|St|t�r t�fdd�|��D��}|St|ttf�r0�fdd�|D�}|S)Nc3s"�|]\}}|��|�fVqdSr��_remove_non_unicode_stings)�.0�k�vrrr�	<genexpr>_s� z?PayloadSerializer._remove_non_unicode_stings.<locals>.<genexpr>csg|]}��|��qSrr3)r5�orrr�
<listcomp>bsz@PayloadSerializer._remove_non_unicode_stings.<locals>.<listcomp>)�
isinstance�strr2r)�items�list�tupler*rrrr4[s


���z,PayloadSerializer._remove_non_unicode_stingscs@z	tt|��|�WSty|�|�}tt|��|�YSwr)�superr(�encoder1r4)rr+�scrubbed_obj��	__class__rrrAes
�zPayloadSerializer.encodecCsHt|tj�r|�|�St|tj�r|�|�St|t�r |�|�St|�Sr)	r;�datetimer/r�MutableMappingr,rr2�reprr*rrr�defaultws



zPayloadSerializer.default)
r#r$r%r,r/r2r4rArH�
__classcell__rrrCrr(Ms
r(c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�DatabaseRecordWriterz
        INSERT INTO records(
            id, request_id, source, event_type, timestamp, payload)
        VALUES (?,?,?,?,?,?) cCs||_t��|_dSr)r
�	threading�Lock�_lock�r�
connectionrrrr��zDatabaseRecordWriter.__init__cCrrrrrrrr�rzDatabaseRecordWriter.closecCsF|�|�}|j�|j�|j|�Wd�dS1swYdSr)�_create_db_recordrMr
r�
_WRITE_RECORD)r�record�	db_recordrrr�write_record�s
"�z!DatabaseRecordWriter.write_recordcCs@|d}tj|dtd�}|d|�d�|d||d|f}|S)N�
event_type�payload)�cls�
command_id�
request_id�source�	timestamp)�json�dumpsr(�get)rrSrV�json_serialized_payloadrTrrrrQ�s
��z&DatabaseRecordWriter._create_db_recordN)r#r$r%rRrrrUrQrrrrrJ�srJc@sXeZdZdZdeZdeZdeZdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�DatabaseRecordReaderzORDER BY timestampz�
        SELECT * FROM records
        WHERE id =
        (SELECT id FROM records WHERE timestamp =
        (SELECT max(timestamp) FROM records)) %s;z%SELECT * from records where id = ? %sz�SELECT a.id AS id_a,     b.id AS id_b,     a.timestamp as timestamp,     a.payload AS args,     b.payload AS rc FROM records a, records b where a.event_type == "CLI_ARGUMENTS" AND     b.event_type = "CLI_RC" AND     id_a == id_b %s DESCcCs||_|j|j_dSr)r
�_row_factoryr"rNrrrr�rPzDatabaseRecordReader.__init__cCrrrrrrrr�rzDatabaseRecordReader.closecCsFi}t|j�D]\}}||}|ddkrt�|�}|||d<q|S)NrrW)�	enumerate�descriptionr]�loads)r�cursor�row�d�idx�col�valrrrrb�s
z!DatabaseRecordReader._row_factorycc�$�|j�|j�}|D]}|Vq
dSr)r
r�_GET_LAST_ID_RECORDS�rrfrgrrr�iter_latest_records��
��z(DatabaseRecordReader.iter_latest_recordsccs(�|j�|j|g�}|D]}|VqdSr)r
r�_GET_RECORDS_BY_ID)r�	record_idrfrgrrr�iter_records�s
��z!DatabaseRecordReader.iter_recordsccrlr)r
r�_GET_ALL_RECORDSrnrrr�iter_all_records�rpz%DatabaseRecordReader.iter_all_recordsN)
r#r$r%�	_ORDERINGrmrqrtrrrbrorsrurrrrra�s �	��
	rac@sLeZdZegd��ZdZdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�ZdS)�
RecordBuilder)�API_CALL�HTTP_REQUEST�
HTTP_RESPONSE�PARSED_RESPONSErxcCsd|_t��|_dSr)�_identifierrK�local�_localsrrrrr�rPzRecordBuilder.__init__cCst|jdd�}|S�NrZ)�getattrr~)rrZrrr�_get_current_thread_request_id�sz,RecordBuilder._get_current_thread_request_idcCst|jdtt����dSr)�setattrr~r<�uuid�uuid4rrrr�_start_http_lifecycle�sz#RecordBuilder._start_http_lifecyclecCs,||jkr	|��||jvr|��}|SdSr)�!_START_OF_REQUEST_LIFECYCLE_EVENTr��_REQUEST_LIFECYCLE_EVENTSr�)rrVrZrrr�_get_request_id�s

zRecordBuilder._get_request_idcCs|jdurtt���|_|jSr)r|r<r�r�rrrr�_get_identifier�s
zRecordBuilder._get_identifiercCs>|��}||||tt��d�d�}|�|�}|r||d<|S)Ni�)rYrVrWr[r\rZ)r��int�timer�)rrVrWr[�uidrSrZrrr�build_record�s�
zRecordBuilder.build_recordN)r#r$r%�setr�r�rr�r�r�r�r�rrrrrw�s�rwc@seZdZdd�Zdd�ZdS)�DatabaseHistoryHandlercCs||_||_dSr)�_writer�_record_builder)r�writer�record_builderrrrr
s
zDatabaseHistoryHandler.__init__cCs |j�|||�}|j�|�dSr)r�r�r�rU)rrVrWr[rSrrr�emitszDatabaseHistoryHandler.emitN)r#r$r%rr�rrrrr�	sr�)r�r�r]rErK�logging�
awscli.compatr�botocore.historyrrr�	getLoggerr#r�objectr�JSONEncoderr(rJrarwr�rrrr�<module>s"
/:!5,