o
    h                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ e	dd	d
d Ze	dd	dd Z
e	dd	dd Ze	dd	dd Ze	dd	dd Ze	d	dddddZdS )   )exc)configure_follower)	create_db)drop_db)generate_driver_url)temp_table_keyword_args)upsertmysqlmariadbc                 C   s   |   }|dkr|  }|| rd}| jd||f d|}|dkr+|dg}n
|dkr5|dg}z|  W |S  tjyG   Y d S w )	Nr	   r
   z%s+%s)
drivernamemariadbconnectorcharsetmysqlconnector)	collationutf8mb4_general_ci)	get_backend_nameget_dialect_is_mariadb_from_urlsetupdate_query_stringdifference_update_queryupdate_query_pairsr   NoSuchModuleError)urldriver	query_strbackenddialect_clsnew_url r   w/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/provision.pyr      s,   


r   c              	   C   s   |  }zt| || W n	 ty   Y nw W d    n1 s!w   Y  |  }|d|  |d|  |d|  W d    d S 1 sKw   Y  d S )Nz(CREATE DATABASE %s CHARACTER SET utf8mb4z4CREATE DATABASE %s_test_schema CHARACTER SET utf8mb4z6CREATE DATABASE %s_test_schema_2 CHARACTER SET utf8mb4)begin_mysql_drop_db	Exceptionexec_driver_sqlcfgengidentconnr   r   r    _mysql_create_db:   s&   

"r*   c                 C   s   d| | _ d| | _d S )Nz%s_test_schemaz%s_test_schema_2)test_schematest_schema_2)configr(   r   r   r    _mysql_configure_followerN   s   
r.   c                 C   sX   |  }|d|  |d|  |d|  W d    d S 1 s%w   Y  d S )NzDROP DATABASE %s_test_schemazDROP DATABASE %s_test_schema_2zDROP DATABASE %s)r!   r$   r%   r   r   r    r"   T   s
   
"r"   c                 C   s
   ddgiS )Nprefixes	TEMPORARYr   )r&   r'   r   r   r    _mysql_temp_table_keyword_args\   s   
r1   NF)
set_lambdasort_by_parameter_orderc                C   s`   ddl m} ||}|r|jdi ||j}n|jjd }||j|i}|j|d|i}|S )N    )insertr3   r   )sqlalchemy.dialects.mysqlr5   on_duplicate_key_updateinsertedprimary_keyckey	returning)r&   tabler<   r2   r3   r5   stmtpk1r   r   r    _upserta   s   r@   ) r   testing.provisionr   r   r   r   r   r   for_dbr*   r.   r"   r1   r@   r   r   r   r    <module>   s(   


'






