
    Dh                         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e      Z
y)	    N)models      )BaseDatabaseCreationr      )truncate_namec                   `     e Zd ZdZ fdZd Zej                  dk  rd Znd Zd Z	d Z
 xZS )	DatabaseCreationz3Maps Django Field object with MySQL data types
    c                 J   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
                  j                  d&d'd(       y y y ))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)selfr6   	__class__s     _/var/www/html/civilisation/venv/lib/python3.12/site-packages/mysql/connector/django/creation.pyr2   zDatabaseCreation.__init__   sK   .z:>>F"5z  6	
 -.G V    M 6  !: 0 	 "8 !*  (!" #F#$  %& );-@6%/'#1DO8 ,,	9&&%2!*(  :; #    c                 2   g }t         j                  dk  r| j                  j                  d   r7|j	                  dj                  | j                  j                  d                | j                  j                  d   r|j	                  dj                  | j                  j                  d                nQ| j                  j                  d   }|d   r|j	                  d|d   z         |d	   r|j	                  d
|d	   z         dj                  |      S )Nr   TEST_CHARSETzCHARACTER SET {0}TEST_COLLATIONzCOLLATE {0}TESTCHARSETzCHARACTER SET %s	COLLATIONz
COLLATE %s )r3   r4   r6   settings_dictappendformatjoin)r9   suffixtest_settingss      r;   sql_table_creation_suffixz*DatabaseCreation.sql_table_creation_suffix8   s    >>F",,^<188OO11.AC D,,-=>m22OO112BCE F !OO99&AMY'0=3KKL[)l];-GGHxxr<   )r   r/   c                 
    g dfS z-All inline references are pending under MySQLT )r9   fieldknown_modelsstyles       r;   %sql_for_inline_foreign_key_referencesz6DatabaseCreation.sql_for_inline_foreign_key_referencesL        t8Or<   c                 
    g dfS rL   rM   )r9   modelrN   rO   rP   s        r;   rQ   z6DatabaseCreation.sql_for_inline_foreign_key_referencesQ   rR   r<   c           	         |j                   }| j                  j                  j                  }d}|j	                  |j                   ||j                                     |j                  t        j                  |      j                  | j                              |j                  d            |j	                  |j                   ||j                                     |j                  t        j                  |j                  j                        j                  | j                              |j                  d            g}|j                         |j                         |j                   |j"                  j$                  f|j                         |j                         |j                  j                  j                   j                   |j                  j                  j                   j"                  j$                  fg}||fS )Nz    {column} {type} {options},)r6   zNOT NULL)columntypeoptions)_metar6   ops
quote_namerF   	SQL_FIELDm2m_column_nameSQL_COLTYPEr   
ForeignKeydb_typeSQL_KEYWORDm2m_reverse_namereltom2m_db_tabledb_tablepkrV   )	r9   rT   rN   rP   optsqn	columndeftable_outputdeferreds	            r;   &sql_for_inline_many_to_many_referencesz7DatabaseCreation.sql_for_inline_many_to_many_referencesV   s   {{__  ++4	r%*?*?*A'BC&&v'8'8'?'G'G# (H (0 1))*5	   r%*@*@*B'CD&&v'8'8'F'N'N# (O (0 1))*5	  
  !5#8#8#:DMM !5#9#9#;		""++UYY\\-?-?-B-B-I-IK
 X%%r<   c           
         t        |      dk(  rB|d   j                  r3| j                  j                  j	                  |d   j                        }nR|j
                  j                  r:| j                  j                  j	                  |j
                  j                        }nd}|rd|z   }g }| j                  j                  j                  }|D ]2  }|j                  |j                   ||j                                     4 dj                  |j
                  j                  | j                  |D cg c]  }|j                   c}            }|j                  d      dz   |j                   |t!        || j                  j                  j#                                           z   dz   |j                  d      z   dz   |j                   ||j
                  j                              z   dz   gS c c}w )	Nr   r    rC   z{0}_{1}z
DROP INDEXON;)lendb_tablespacer6   rZ   tablespace_sqlrY   r[   rE   r\   rV   rF   rf   _digestnamera   	SQL_TABLEr
   max_name_length)	r9   rT   fieldsrP   rt   field_namesri   f
index_names	            r;   sql_destroy_indexes_for_fieldsz/DatabaseCreation.sql_destroy_indexes_for_fieldsr   s   v;!q	 7 7!__00??q	'')N[[&&!__00??))+N  N >1N__  ++ 	>Aur!((|<=	> %%ekk&:&:&*llF3KqAFF3K&LN
 l+c1OOB}Z##335 7 8 99;>? d#$ '** OOBu{{3345	6 9<	<
 	
 4Ls   2G0)__name__
__module____qualname____doc__r2   rJ   r3   r4   rQ   rm   r}   __classcell__)r:   s   @r;   r   r      s5    $L & ~~	
	
&8
r<   r   )r3   	django.dbr   r4    django.db.backends.base.creationr   django.db.backends.creationdjango.db.backends.utilr
   django.db.backends.utilsr   rM   r<   r;   <module>r      s@     	>>VE@	>>F56~
+ ~
r<   