B
    Ñš[2  ã               @   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)Zmysql.connector.conversionr   ÚquoteÚescape)ÚselfÚvaluer   © r   ú¡C:\Users\HIRONO~1\AppData\Local\Temp\pip-install-ioykiiwb\mysql-connector-python-rf\mysql_connector_python_rf-2.2.2.data\purelib\mysql\connector\django\schema.pyÚquote_value&   s    z DatabaseSchemaEditor.quote_valuec             C   s   |  | j¡dkS )zˆ
        MySQL doesn't accept default values for longtext and longblob
        and implicitly treats these columns as nullable.
        )ZlongtextZlongblob)Zdb_typeÚ
connection)r
   Úfieldr   r   r   Úskip_default+   s    z!DatabaseSchemaEditor.skip_defaultc                sb   t t| ƒ ||¡ |  |¡r^|jd tfkr^|  |¡}|  d|  |j	j
¡|  |j¡dœ |g¡ d S )Nz%UPDATE %(table)s SET %(column)s = %%s)ÚtableÚcolumn)Úsuperr   Ú	add_fieldr   Údefaultr   Úeffective_defaultÚexecuteZ
quote_nameÚ_metaÚdb_tabler   )r
   Úmodelr   r   )Ú	__class__r   r   r   2   s    

zDatabaseSchemaEditor.add_fieldc                sb   | j j | j  ¡ |jj¡}|dkrRx.|jjD ]"}|jr,|js,| 	¡ dkr,d|_q,W t
t| ƒ |¡S )NZInnoDBZ
ForeignKeyF)r   ZintrospectionZget_storage_engineÚcursorr   r   Zlocal_fieldsZdb_indexÚuniqueZget_internal_typer   r   Ú_model_indexes_sql)r
   r   Z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   Z	old_fieldZ	new_fieldZnew_type)r   r   r   r!   M   s
    

z+DatabaseSchemaEditor._alter_column_type_sql)Ú__name__Ú
__module__Ú__qualname__Zsql_rename_tableZsql_alter_column_nullZsql_alter_column_not_nullZsql_alter_column_typeZsql_rename_columnZsql_delete_uniqueZsql_create_fkZsql_delete_fkZsql_delete_indexZalter_string_set_nullZalter_string_drop_nullZsql_create_pkZsql_delete_pkr   r   r   r   r!   Ú__classcell__r   r   )r   r   r      s$   r   )ZdjangoÚVERSIONZdjango.db.backends.base.schemar   Zdjango.db.backends.schemaZdjango.db.modelsr   r   r   r   r   r   Ú<module>   s
   
