
    Hwg                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZ  G d
 dee      Zy)    )models)
WKTAdapter)BaseSpatialOperations)SpatialOperator)GEOSGeometryBase)wkb_r)Distance)DatabaseOperations)cached_propertyc                      e Zd ZdZdZeZed        Zed        Z	ed        Z
ed        Zed        Zej                  ej                  ej                   ej"                  ej$                  fZdd	d
Zed        Zd Zd Zd Zy)MySQLOperationsmysqlST_c                 .    | j                   j                  S N
connectionmysql_is_mariadbselfs    f/var/www/horilla/myenv/lib/python3.12/site-packages/django/contrib/gis/db/backends/mysql/operations.pymariadbzMySQLOperations.mariadb   s    ///    c                 0    | j                   j                   S r   r   r   s    r   r   zMySQLOperations.mysql   s    ??3333r   c                      | j                   dz   S )NzAsBinary(%s)geom_func_prefixr   s    r   selectzMySQLOperations.select       $$~55r   c                      | j                   dz   S )NGeomFromTextr   r   s    r   	from_textzMySQLOperations.from_text   r   r   c                 t   t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d	      t        d
      t        d      t        d      t        d      d}| j                  j                  rt        d      |d<   |S )NMBRContains)funcMBROverlaps	MBRWithinST_Contains
ST_CrossesST_Disjoint	ST_EqualsST_IntersectsST_Overlaps
ST_Touches	ST_Within)
bbcontains
bboverlaps	containedcontainscrossesdisjointequalsexact
intersectsoverlapssame_astoucheswithin	ST_Relaterelate)r   r   r   )r   	operatorss     r   gis_operatorszMySQLOperations.gis_operators"   s     *" *}=(k:'];&L9'];%;7$+6)?'];&K8&L9%;7
	" ??++"1{"CIhr   ST_GeomFromWKBST_GeomFromText)FromWKBFromWKTc                     h d}| j                   j                  r$|j                  d       |j                  ddh       |S )N>   AsGMLAsKMLAsSVGScaleAzimuthIsEmptyMemSizeReverse	MakeValid	Perimeter	Transform	Translate
SnapToGridBoundingCircleForcePolygonCWPointOnSurfaceLineLocatePointGeometryDistancerU   GeoHashIsValid)r   r   removeupdate)r   unsupporteds     r   unsupported_functionsz%MySQLOperations.unsupported_functionsF   s@    
( ??++/0	956r   c                     |j                   S r   )	geom_type)r   fs     r   geo_db_typezMySQLOperations.geo_db_typea   s    {{r   c                     |d   }t        |t              ra|j                  | j                        rt	        d      t        |t        j                  |j                  | j                                    }|gS |}|gS )Nr   zMOnly numeric values of degree units are allowed on geodetic distance queries.)
isinstancer	   geodeticr   
ValueErrorgetattrunit_attname
units_name)r   r`   valuelookup_type
dist_params        r   get_distancezMySQLOperations.get_distanced   sy    aeX&zz$//* 1  !x,,Q\\$//-JKJ
 | J|r   c                     t               j                  |j                  j                  dk(  rd |j                  j                  fd}|S )Nc                 V    | &t         t        |                   }r|_        |S y r   )r   
memoryviewsrid)ri   
expressionr   geom
geom_classreadrq   s       r   	converterz9MySQLOperations.get_geometry_converter.<locals>.converterz   s3     'Z->(?L $DI	 !r   )r   ru   output_fieldrq   rt   )r   rr   rv   rt   ru   rq   s      @@@r   get_geometry_converterz&MySQLOperations.get_geometry_converters   sI    w||&&++2:D,,77
	 r   N)__name__
__module____qualname__namer   r   Adapterr   r   r   r   r"   r@   r   CollectExtentExtent3DMakeLineUniondisallowed_aggregatesfunction_namesr]   ra   rl   rx    r   r   r   r      s    DG0 0 4 4 6 6 6 6  . 	 $$N
  4r   r   N)django.contrib.gis.dbr   +django.contrib.gis.db.backends.base.adapterr   .django.contrib.gis.db.backends.base.operationsr   $django.contrib.gis.db.backends.utilsr    django.contrib.gis.geos.geometryr   %django.contrib.gis.geos.prototypes.ior   django.contrib.gis.measurer	   #django.db.backends.mysql.operationsr
   django.utils.functionalr   r   r   r   r   <module>r      s2    ( B P @ = 7 / B 3u+-? ur   