U
    gU                     @  s   d dl mZ ddlmZmZ d dlmZ d dlZd dlZG dd de	Z
eG dd	 d	ZeG d
d dZddddZddddZddddddZdddddZedeG dd dZdS )    )annotations   )event_classT_JSON_DICT)	dataclassNc                      sB   e Zd ZdZddddZedd dddZ fd	d
Z  ZS )
DatabaseIdz/
    Unique identifier of Database object.
    strreturnc                 C  s   | S N selfr   r   T/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/common/devtools/v129/database.pyto_json   s    zDatabaseId.to_jsonjsonr
   c                 C  s   | |S r   r   clsr   r   r   r   	from_json   s    zDatabaseId.from_jsonc                   s   d t  S )NzDatabaseId({}))formatsuper__repr__r   	__class__r   r   r      s    zDatabaseId.__repr__)	__name__
__module____qualname____doc__r   classmethodr   r   __classcell__r   r   r   r   r      s
   r   c                   @  sF   e Zd ZU dZded< ded< ded< ded< dd	 Zed
d ZdS )Databasez
    Database object.
    r   id_r   domainnameversionc                 C  s6   t  }| j |d< | j|d< | j|d< | j|d< |S )Nidr#   r$   r%   )dictr"   r   r#   r$   r%   r   r   r   r   r   r   -   s    


zDatabase.to_jsonc                 C  s2   | t |d t|d t|d t|d dS )Nr&   r#   r$   r%   )r"   r#   r$   r%   )r   r   r   r   r   r   r   r   5   s    


zDatabase.from_jsonNr   r   r   r   __annotations__r   r   r   r   r   r   r   r!      s   
r!   c                   @  s6   e Zd ZU dZded< ded< dd Zedd	 Zd
S )Errorz
    Database error.
    r   messageintcodec                 C  s   t  }| j|d< | j|d< |S )Nr,   r.   )r'   r,   r.   r(   r   r   r   r   J   s    

zError.to_jsonc                 C  s   | t |d t|d dS )Nr,   r.   )r,   r.   )r   r-   r   r   r   r   r   P   s    

zError.from_jsonNr)   r   r   r   r   r+   ?   s   
r+   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]r	   c                  c  s   ddi} | V }dS )z]
    Disables database tracking, prevents database events from being sent to the client.
    methodzDatabase.disableNr   cmd_dictr   r   r   r   disableX   s     r2   c                  c  s   ddi} | V }dS )zY
    Enables database tracking, database events will now be delivered to the client.
    r/   zDatabase.enableNr   r0   r   r   r   enableb   s     r3   r   ztyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[typing.Optional[typing.List[str]], typing.Optional[typing.List[typing.Any]], typing.Optional[Error]]])database_idqueryr
   c                 c  s~   t  }|  |d< ||d< d|d}|V }d|krDdd |d D ndd	|kr`d
d |d	 D ndd|krxt|d ndfS )z
    :param database_id:
    :param query:
    :returns: A tuple with the following items:

        0. **columnNames** - 
        1. **values** - 
        2. **sqlError** - 
    
databaseIdr5   zDatabase.executeSQLr/   paramsZcolumnNamesc                 S  s   g | ]}t |qS r   r   .0ir   r   r   
<listcomp>   s     zexecute_sql.<locals>.<listcomp>Nvaluesc                 S  s   g | ]}|qS r   r   r:   r   r   r   r=      s     ZsqlError)r'   r   r+   r   )r4   r5   r8   r1   r   r   r   r   execute_sqll   s    r?   z<typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[str]])r4   r
   c                 c  s4   t  }|  |d< d|d}|V }dd |d D S )z,
    :param database_id:
    :returns: 
    r6   zDatabase.getDatabaseTableNamesr7   c                 S  s   g | ]}t |qS r   r9   r:   r   r   r   r=      s     z,get_database_table_names.<locals>.<listcomp>Z
tableNames)r'   r   )r4   r8   r1   r   r   r   r   get_database_table_names   s    r@   zDatabase.addDatabasec                   @  s*   e Zd ZU ded< edd dddZdS )AddDatabaser!   databaser   r   c                 C  s   | t |d dS )NrB   )rB   )r!   r   r   r   r   r   r      s    zAddDatabase.from_jsonN)r   r   r   r*   r   r   r   r   r   r   rA      s   
rA   )
__future__r   utilr   r   Zdataclassesr   enumtypingr   r   r!   r+   r2   r3   r?   r@   rA   r   r   r   r   <module>   s    "

