o
    –¨Êh2  ã                   @   sL   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„ deƒZdS )é    N)é   é   )ÚBaseDatabaseSchemaEditor)ÚNOT_PROVIDEDc                       sx   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d„ Zdd„ Z‡ fdd„Z‡ fdd„Z‡ fdd„Z‡  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                 C   s   ddl m} | | |¡¡S )Nr   )ÚMySQLConverter)Úmysql.connector.conversionr   ÚquoteÚescape)ÚselfÚvaluer   © r   úO/var/www/html/env/lib/python3.10/site-packages/mysql/connector/django/schema.pyÚquote_value&   s   z DatabaseSchemaEditor.quote_valuec                 C   s   |  | 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   Úfieldr   r   r   Úskip_default+   s   z!DatabaseSchemaEditor.skip_defaultc                    sj   t t| ƒ ||¡ |  |¡r1|jd tfvr3|  |¡}|  d|  |j	j
¡|  |j¡dœ |g¡ d S d S d S )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__r   r   r   2   s   


þýýzDatabaseSchemaEditor.add_fieldc                    s^   | j j | j  ¡ |jj¡}|dkr'|jjD ]}|jr&|js&| 	¡ dkr&d|_qt
t| ƒ |¡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!   r   r   r,   >   s   ÿ€z'DatabaseSchemaEditor._model_indexes_sqlc                    s.   |j r|d7 }n|d7 }tt| ƒ ||||¡S )Nz NULLz	 NOT NULL)Únullr   r   Ú_alter_column_type_sql)r   r   Ú	old_fieldÚ	new_fieldÚnew_typer!   r   r   r/   M   s   

ÿz+DatabaseSchemaEditor._alter_column_type_sql)Ú__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   r,   r/   Ú__classcell__r   r   r!   r   r      s&    r   )ÚdjangoÚVERSIONÚdjango.db.backends.base.schemar   Údjango.db.backends.schemaÚdjango.db.modelsr   r   r   r   r   r   Ú<module>   s   
