o
    ^"<fi                     @   s,   d dl mZ d dlmZ G dd deZdS )    )	Statement)DatabaseSchemaEditorc                       sV   e Zd ZdZdZdZdZdZdd Z fdd	Z	d
d fdd
Z
 fddZ  ZS )PostGISSchemaEditorGIST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   d/var/www/html/kck/venv/lib/python3.10/site-packages/django/contrib/gis/db/backends/postgis/schema.pyr	      s   z"PostGISSchemaEditor.geo_quote_namec                    s   t |ddrdS t ||S )Nspatial_indexFT)getattrsuper_field_should_be_indexed)r
   modelfield	__class__r   r   r      s   z,PostGISSchemaEditor._field_should_be_indexedN)fieldsc             
      s   |d u st |dkst|d dst j|fd|i|S |d }| |j}|jdkr2| j| }n|jdkrA|j	sAd|| j
f }|dd u rRd	|jj|jf }n|d }t| j| || |jjd
| j |ddddS )N   r   geodeticr   RASTER   z%s %sr   z%s_%s_idz	 USING %s )r   tableusingcolumnsextra	conditioninclude)lenhasattrr   _create_index_sql
quote_namecolumn	geom_typerast_index_wrapperdim	geographygeom_index_ops_ndget_metadb_tabler   sql_create_indexgeom_index_type)r
   r   r   kwargsr   field_column
index_namer   r   r   r$      s*   "
z%PostGISSchemaEditor._create_index_sqlc                    s   t |dr
t |dst ||||S |jdkr!|jdkr!| 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_2dsql_alter_column_typer%   r&   )r
   r   	old_field	new_fieldnew_type	sql_alterr   r   r   r6   3   s   
z*PostGISSchemaEditor._alter_column_type_sql)__name__
__module____qualname__r0   r+   r(   r7   r8   r	   r   r$   r6   __classcell__r   r   r   r   r      s    r   N)!django.db.backends.ddl_referencesr   $django.db.backends.postgresql.schemar   r   r   r   r   r   <module>   s    