B
    ¥0H[W
  ã               @   s    d dl mZ G dd„ deƒZdS )é    )ÚDatabaseSchemaEditorc                   sP   e Zd ZdZdZdZdZdZdd„ Z‡ fdd	„Z	‡ fd
d„Z
‡ fdd„Z‡  ZS )ÚPostGISSchemaEditorZGISTZGIST_GEOMETRY_OPS_NDzST_ConvexHull(%s)zLALTER COLUMN %(column)s TYPE %(type)s USING ST_Force3D(%(column)s)::%(type)szLALTER COLUMN %(column)s TYPE %(type)s USING ST_Force2D(%(column)s)::%(type)sc             C   s   | j j |¡S )N)Ú
connectionÚopsÚgeo_quote_name)ÚselfÚname© r	   úqC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\django\contrib\gis\db\backends\postgis\schema.pyr      s    z"PostGISSchemaEditor.geo_quote_namec                s   t |ddƒrdS tƒ  ||¡S )NZspatial_indexFT)ÚgetattrÚsuperÚ_field_should_be_indexed)r   ÚmodelÚfield)Ú	__class__r	   r
   r      s    z,PostGISSchemaEditor._field_should_be_indexedc                s®   t |ƒdkst|d dƒs,tƒ j||f|ŽS |d }|  |j¡}|jdkrV| j| }n|jdkrt|j	std|| j
f }| j|  d|jj|jf ¡|  |jj¡d| j |d	d
œ S )Né   r   ZgeodeticZRASTERé   z%s %sz%s_%s_idzUSING %sÚ )r   ÚtableZusingÚcolumnsÚextra)ÚlenÚhasattrr   Ú_create_index_sqlÚ
quote_nameÚcolumnZ	geom_typeÚrast_index_wrapperÚdimZ	geographyÚgeom_index_ops_ndZsql_create_indexZ_metaZdb_tableÚgeom_index_type)r   r   ÚfieldsÚkwargsr   Zfield_column)r   r	   r
   r      s    
z%PostGISSchemaEditor._create_index_sqlc                s‚   t |dƒrt |dƒs&tƒ  ||||¡S |jdkrB|jdkrB| j}n"|jdkr^|jdkr^| j}n| j}||  |j¡|dœ g fg fS )z6
        Special case when dimension changed.
        r   r   é   )r   Útype)	r   r   Ú_alter_column_type_sqlr   Úsql_alter_column_to_3dÚsql_alter_column_to_2dZsql_alter_column_typer   r   )r   r   Z	old_fieldZ	new_fieldZnew_typeZ	sql_alter)r   r	   r
   r$   +   s    
z*PostGISSchemaEditor._alter_column_type_sql)Ú__name__Ú
__module__Ú__qualname__r   r   r   r%   r&   r   r   r   r$   Ú__classcell__r	   r	   )r   r
   r      s   r   N)Z$django.db.backends.postgresql.schemar   r   r	   r	   r	   r
   Ú<module>   s   