3
S^                 @   s@   d dl Z d dlmZ d dlmZ d dlmZ G dd deZdS )    N)models)BaseDatabaseCreation)truncate_namec                   s@   e Zd ZdZ fddZdd Zdd Zdd	 Zd
d Z  Z	S )DatabaseCreationz3Maps Django Field object with MySQL data types
    c                s   t t| j| d S )N)superr   __init__)self
connection)	__class__ Q/tmp/pip-build-8app2_gc/mysql-connector-python/mysql/connector/django/creation.pyr      s    zDatabaseCreation.__init__c             C   sN   g }| j jd }|d r*|jd|d   |d rD|jd|d   dj|S )NZTESTCHARSETzCHARACTER SET %sZ	COLLATIONz
COLLATE %s )r	   Zsettings_dictappendjoin)r   suffixZtest_settingsr   r   r   sql_table_creation_suffix   s    z*DatabaseCreation.sql_table_creation_suffixc             C   s   g dfS )z-All inline references are pending under MySQLTr   )r   modelfieldZknown_modelsstyler   r   r   %sql_for_inline_foreign_key_references   s    z6DatabaseCreation.sql_for_inline_foreign_key_referencesc       	      C   s   |j }| jjj}d}|j|j||j |jtj	|j
| jd|jdd|j|j||j |jtj	|jjj
| jd|jd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},)r	   zNOT NULL)columntypeoptions)_metar	   ops
quote_nameformat	SQL_FIELDZm2m_column_nameZSQL_COLTYPEr   Z
ForeignKeyZdb_typeSQL_KEYWORDZm2m_reverse_namerelZtoZm2m_db_tabledb_tablepkr   )	r   r   r   r   optsqnZ	columndefZtable_outputdeferredr   r   r   &sql_for_inline_many_to_many_references   s$    


z7DatabaseCreation.sql_for_inline_many_to_many_referencesc       	      C   s   t |dkr,|d jr,| jjj|d j}n |jjrH| jjj|jj}nd}|rXd| }g }| jjj}x"|D ]}|j|j||j	 qlW dj
|jj| jdd |D }|jdd |j|t|| jjj  d |jd	 d |j||jj d
 gS )N   r    r   z{0}_{1}c             S   s   g | ]
}|j qS r   )name).0fr   r   r   
<listcomp>L   s    zCDatabaseCreation.sql_destroy_indexes_for_fields.<locals>.<listcomp>z
DROP INDEXON;)lenZdb_tablespacer	   r   tablespace_sqlr   r   r   r   r   r   r!   Z_digestr   Z	SQL_TABLEr   Zmax_name_length)	r   r   fieldsr   r0   field_namesr$   r+   Z
index_namer   r   r   sql_destroy_indexes_for_fields:   s     


z/DatabaseCreation.sql_destroy_indexes_for_fields)
__name__
__module____qualname____doc__r   r   r   r&   r3   __classcell__r   r   )r
   r   r   	   s   
r   )ZdjangoZ	django.dbr   Z django.db.backends.base.creationr   Zdjango.db.backends.utilsr   r   r   r   r   r   <module>   s   