
    Dh2                     f    d dl Z e j                  dk\  rd dlmZ nd dlmZ d dlmZ  G d de      Zy)    N)      )BaseDatabaseSchemaEditor)NOT_PROVIDEDc                   r     e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZd Zd Z fdZ fdZ fdZ xZS )DatabaseSchemaEditorz+RENAME TABLE %(old_table)s TO %(new_table)szMODIFY %(column)s %(type)s NULLz#MODIFY %(column)s %(type)s NOT NULLzMODIFY %(column)s %(type)szCALTER TABLE %(table)s CHANGE %(old_column)s %(new_column)s %(type)sz)ALTER TABLE %(table)s DROP INDEX %(name)sznALTER TABLE %(table)s ADD CONSTRAINT %(name)s FOREIGN KEY (%(column)s) REFERENCES %(to_table)s (%(to_column)s)z/ALTER TABLE %(table)s DROP FOREIGN KEY %(name)sz DROP INDEX %(name)s ON %(table)sz MODIFY %(column)s %(type)s NULL;z$MODIFY %(column)s %(type)s NOT NULL;zGALTER TABLE %(table)s ADD CONSTRAINT %(name)s PRIMARY KEY (%(columns)s)z&ALTER TABLE %(table)s DROP PRIMARY KEYc                 N    ddl m} |j                  |j                  |            S )Nr   )MySQLConverter)mysql.connector.conversionr
   quoteescape)selfvaluer
   s      ]/var/www/html/civilisation/venv/lib/python3.12/site-packages/mysql/connector/django/schema.pyquote_valuez DatabaseSchemaEditor.quote_value&   s!    =##N$9$9%$@AA    c                 <    |j                  | j                        dv S )z
        MySQL doesn't accept default values for longtext and longblob
        and implicitly treats these columns as nullable.
        )longtextlongblob)db_type
connection)r   fields     r   skip_defaultz!DatabaseSchemaEditor.skip_default+   s    
 }}T__-1IIIr   c                 H   t         t        |   ||       | j                  |      r||j                  d t
        fvrg| j                  |      }| j                  d| j                  |j                  j                        | j                  |j                        dz  |g       y y y )Nz%UPDATE %(table)s SET %(column)s = %%s)tablecolumn)superr   	add_fieldr   defaultr   effective_defaultexecute
quote_name_metadb_tabler   )r   modelr   r    	__class__s       r   r   zDatabaseSchemaEditor.add_field2   s    "D3E5A e$MM$)== $ 6 6u =LL@)=)=>//%,,7D  ""$ > %r   c                 x   | j                   j                  j                  | j                   j                         |j                  j
                        }|dk(  rP|j                  j                  D ]7  }|j                  s|j                  r|j                         dk(  s1d|_        9 t        t        | 3  |      S )NInnoDB
ForeignKeyF)r   introspectionget_storage_enginecursorr#   r$   local_fieldsdb_indexuniqueget_internal_typer   r   _model_indexes_sql)r   r%   storager   r&   s       r   r1   z'DatabaseSchemaEditor._model_indexes_sql>   s    ////BBOO""$ekk&:&:
 h11 +NN5<<!335E &+EN+ )4CEJJr   c                 ^    |j                   r|dz  }n|dz  }t        t        |   ||||      S )Nz NULLz	 NOT NULL)nullr   r   _alter_column_type_sql)r   r   	old_field	new_fieldnew_typer&   s        r   r5   z+DatabaseSchemaEditor._alter_column_type_sqlM   s>     >>H#H)4G9i3 	3r   )__name__
__module____qualname__sql_rename_tablesql_alter_column_nullsql_alter_column_not_nullsql_alter_column_typesql_rename_columnsql_delete_uniquesql_create_fksql_delete_fksql_delete_indexalter_string_set_nullalter_string_drop_nullsql_create_pksql_delete_pkr   r   r   r1   r5   __classcell__)r&   s   @r   r   r      sx    D= E82 DOMEM9>C0M<MB
J
$K	3 	3r   r   )djangoVERSIONdjango.db.backends.base.schemar   django.db.backends.schemadjango.db.modelsr   r    r   r   <module>rP      s.   
 	>>VGB )I33 I3r   