o
    –¨Êh‰  ã                   @   sp   d dl Z d dlmZ e jdkrd dlmZ nd dlmZ e jdk r(d dlmZ nd dl	mZ G dd„ deƒZ
dS )	é    N)Úmodels©é   é   )ÚBaseDatabaseCreation©r   é   )Útruncate_namec                       sT   e Zd ZdZ‡ fdd„Zdd„ Zejdk rdd„ Znd	d„ Zd
d„ Z	dd„ Z
‡  ZS )ÚDatabaseCreationz3Maps Django Field object with MySQL data types
    c                    sÂ   t t| ƒ |¡ tjdk r]i dd“dd“dd“dd	“d
d	“dd“dd“dd“dd	“dd	“dd“dd“dd“dd“dd“dd“dd“dd d	d!d"d#d$œ¥| _| jjd%kr_| j d&d'd(œ¡ d S d S d S ))Nr   Ú	AutoFieldzinteger AUTO_INCREMENTÚBinaryFieldÚlongblobÚBooleanFieldÚboolÚ	CharFieldzvarchar(%(max_length)s)ÚCommaSeparatedIntegerFieldÚ	DateFieldÚdateÚDateTimeFieldÚdatetimeÚDecimalFieldz+numeric(%(max_digits)s, %(decimal_places)s)Ú	FileFieldÚFilePathFieldÚ
FloatFieldzdouble precisionÚIntegerFieldÚintegerÚBigIntegerFieldÚbigintÚIPAddressFieldzchar(15)ÚGenericIPAddressFieldzchar(39)ÚNullBooleanFieldÚOneToOneFieldzinteger UNSIGNEDzsmallint UNSIGNEDÚsmallintÚlongtextÚtime)ÚPositiveIntegerFieldÚPositiveSmallIntegerFieldÚ	SlugFieldÚSmallIntegerFieldÚ	TextFieldÚ	TimeField)é   é   é   zdatetime(6)ztime(6))r   r*   )	Úsuperr
   Ú__init__ÚdjangoÚVERSIONÚ
data_typesÚ
connectionÚmysql_versionÚupdate)Úselfr3   ©Ú	__class__© úQ/var/www/html/env/lib/python3.10/site-packages/mysql/connector/django/creation.pyr/      sf   
ÿþýüûúùø	÷
öõôóòðïî
èþâzDatabaseCreation.__init__c                 C   s¢   g }t jdk r,| jjd r| d | jjd ¡¡ | jjd r+| d | jjd ¡¡ n | jjd }|d r?| d|d  ¡ |d	 rL| d
|d	  ¡ d |¡S )Nr   ÚTEST_CHARSETzCHARACTER SET {0}ÚTEST_COLLATIONzCOLLATE {0}ÚTESTÚCHARSETzCHARACTER SET %sÚ	COLLATIONz
COLLATE %sú )r0   r1   r3   Úsettings_dictÚappendÚformatÚjoin)r6   ÚsuffixÚtest_settingsr9   r9   r:   Úsql_table_creation_suffix8   s"   

ÿ
ÿ€
z*DatabaseCreation.sql_table_creation_suffix)r   r,   c                 C   ó   g dfS ©z-All inline references are pending under MySQLTr9   )r6   ÚfieldÚknown_modelsÚstyler9   r9   r:   Ú%sql_for_inline_foreign_key_referencesL   ó   z6DatabaseCreation.sql_for_inline_foreign_key_referencesc                 C   rH   rI   r9   )r6   ÚmodelrJ   rK   rL   r9   r9   r:   rM   Q   rN   c           	      C   sÔ   |j }| jjj}d}|j| || ¡ ƒ¡| t 	|¡j
| jd�¡| d¡d�|j| || ¡ ƒ¡| t 	|jj¡j
| jd�¡| d¡d�g}| ¡ | ¡ |j|jjf| ¡ | ¡ |jjj j|jjj jjfg}||fS )Nz    {column} {type} {options},)r3   zNOT NULL)ÚcolumnÚtypeÚoptions)Ú_metar3   ÚopsÚ
quote_namerC   Ú	SQL_FIELDÚm2m_column_nameÚSQL_COLTYPEr   Ú
ForeignKeyÚdb_typeÚSQL_KEYWORDÚm2m_reverse_nameÚrelÚtoÚm2m_db_tableÚdb_tableÚpkrP   )	r6   rO   rJ   rL   ÚoptsÚqnÚ	columndefÚtable_outputÚdeferredr9   r9   r:   Ú&sql_for_inline_many_to_many_referencesV   s4   
ÿüÿüùÿÿýz7DatabaseCreation.sql_for_inline_many_to_many_referencesc           	      C   sú   t |ƒdkr|d jr| jj |d j¡}n|jjr$| jj |jj¡}nd}|r,d| }g }| jjj}|D ]}| | ||j	ƒ¡¡ q5d 
|jj|  dd„ |D ƒ¡¡}| d¡d | |t|| jj ¡ ƒƒ¡ d | d	¡ d | ||jjƒ¡ d
 gS )Nr   r   Ú r@   z{0}_{1}c                 S   s   g | ]}|j ‘qS r9   )Úname)Ú.0Úfr9   r9   r:   Ú
<listcomp>…   s    zCDatabaseCreation.sql_destroy_indexes_for_fields.<locals>.<listcomp>z
DROP INDEXÚONú;)ÚlenÚdb_tablespacer3   rT   Útablespace_sqlrS   rU   rB   rV   rP   rC   r`   Ú_digestr[   Ú	SQL_TABLEr	   Úmax_name_length)	r6   rO   ÚfieldsrL   rq   Úfield_namesrc   rk   Ú
index_namer9   r9   r:   Úsql_destroy_indexes_for_fieldsr   sD   ÿÿ

ÿ

ÿÿþýýüüÿz/DatabaseCreation.sql_destroy_indexes_for_fields)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/   rG   r0   r1   rM   rg   rx   Ú__classcell__r9   r9   r7   r:   r
      s    &

r
   )r0   Ú	django.dbr   r1   Ú django.db.backends.base.creationr   Údjango.db.backends.creationÚdjango.db.backends.utilr	   Údjango.db.backends.utilsr
   r9   r9   r9   r:   Ú<module>   s   

