Ë
    Ç]jŽ  ã                   óˆ   — 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d„ «       Zed	„ «       Zd
ddœZed„ «       Z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/zogu/zoguvenv/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                 ób   — | j                   j                  j                  r| j                  dz   S y )NÚCollect)r   ÚfeaturesÚsupports_collect_aggrr   r   s    r   ÚcollectzMySQLOperations.collect"   s+   € à�?‰?×#Ñ#×9Ò9Ø×(Ñ(¨9Ñ4Ð4ð :r   c                 óä  — 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¬«      t        d¬«      dœ}| j                  j                  r-t        d¬«      |d<   | j                  j                  dk  r|d= |S t        d¬«      |d<   |S )NÚMBRContains)ÚfuncÚMBROverlapsÚ	MBRWithinÚST_ContainsÚMBRCoveredByÚ
ST_CrossesÚST_DisjointÚ	ST_EqualsÚST_IntersectsÚST_OverlapsÚ
ST_TouchesÚ	ST_Within)Ú
bbcontainsÚ
bboverlapsÚ	containedÚcontainsÚ	coveredbyÚcrossesÚdisjointÚequalsÚexactÚ
intersectsÚoverlapsÚsame_asÚtouchesÚwithinÚ	ST_RelateÚrelate©é   r   é   r:   Ú	MBRCoversÚcovers)r   r   r   Úmysql_version)r   Ú	operatorss     r   Úgis_operatorszMySQLOperations.gis_operators'   s×   € ô *Ø"ôô *¨}Ô=Ü(¨kÔ:Ü'¨]Ô;Ü(¨nÔ=Ü&¨LÔ9Ü'¨]Ô;Ü%¨;Ô7Ü$¨+Ô6Ü)¨Ô?Ü'¨]Ô;Ü&¨KÔ8Ü&¨LÔ9Ü%¨;Ô7ñ!
ˆ	ð$ �?‰?×+Ò+Ü"1°{Ô"CˆI�hÑØ�‰×,Ñ,¨zÒ9Ø˜kÐ*ð Ðô #2°{Ô"CˆI�hÑØÐr   c                 ó¾  — t         j                  t         j                  t         j                  t         j                  g}| j
                  j                  }|rD| j
                  j                  dk  rd|j                  dt         j                  «       t        |«      S | j
                  j                  dk  r |j                  dt         j                  «       t        |«      S )NrF   r   )é   r   é   )r   ÚExtentÚExtent3DÚMakeLineÚUnionr   r   rK   Úinsertr$   Útuple)r   Údisallowed_aggregatesÚ
is_mariadbs      r   rW   z%MySQLOperations.disallowed_aggregatesC   s¤   € ô �M‰MÜ�O‰OÜ�O‰OÜ�L‰Lð	!
Ðð —_‘_×5Ñ5ˆ
ÙØ�‰×,Ñ,¨zÒ9Ø%×,Ñ,¨Q´·±Ô?ô Ð*Ó+Ð+ð �_‰_×*Ñ*¨ZÒ7Ø!×(Ñ(¨¬F¯N©NÔ;ÜÐ*Ó+Ð+r   ÚST_GeomFromWKBÚST_GeomFromText)ÚFromWKBÚFromWKTc                 ó´   — h d£}| j                   j                  r=|j                  d«       | j                   j                  dk  r|j	                  ddh«       |S )N>   ÚAsGMLÚAsKMLÚAsSVGÚScaleÚRotateÚAzimuthÚIsEmptyÚMemSizeÚReverseÚ	MakeValidÚ	PerimeterÚ	TransformÚ	TranslateÚ
SnapToGridÚClosestPointÚBoundingCircleÚForcePolygonCWÚPointOnSurfaceÚLineLocatePointÚGeometryDistancero   rF   ÚGeoHashÚIsValid)r   r   ÚremoverK   Úupdate)r   Úunsupporteds     r   Úunsupported_functionsz%MySQLOperations.unsupported_functionsX   sR   € ò
ˆð, �?‰?×+Ò+Ø×ÑÐ/Ô0Ø�‰×,Ñ,¨zÒ9Ø×"Ñ" I¨yÐ#9Ô:ØÐr   c                 ó   — |j                   S r   )Ú	geom_type)r   Úfs     r   Úgeo_db_typezMySQLOperations.geo_db_typev   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   rz   ÚvalueÚlookup_typeÚ
dist_params        r   Úget_distancezMySQLOperations.get_distancey   sy   € Ø�a‘ˆÜ�eœXÔ&Ø�z‰z˜$Ÿ/™/Ô*Ü ð1óð ô !Ø”x×,Ñ,¨Q¯\©\¸$¿/¹/Ó-JÓKóˆJð
 ˆ|Ðð ˆJØˆ|Ðr   c                 ó¨   ‡‡‡— t        «       j                  Š|j                  j                  Š‰dk(  rd Š|j                  j                  Šˆˆˆfd„}|S )Néÿÿÿÿc                 óV   •— | �&t         ‰t        | «      «      ‰«      }‰r‰|_        |S y r   )r   Ú
memoryviewÚsrid)rƒ   Ú
expressionr   ÚgeomÚ
geom_classÚreadr‹   s       €€€r   Ú	converterz9MySQLOperations.get_geometry_converter.<locals>.converter�   s3   ø€ ØÐ Ü'©¬Z¸Ó->Ó(?ÀÓL�ÙØ $�D”IØ�ð	 !r   )r   r�   Úoutput_fieldr‹   rŽ   )r   rŒ   r�   rŽ   r�   r‹   s      @@@r   Úget_geometry_converterz&MySQLOperations.get_geometry_converterˆ   sI   ú€ Ü‹w�|‰|ˆØ×&Ñ&×+Ñ+ˆØ�2Š:ØˆDØ×,Ñ,×7Ñ7ˆ
ö	ð Ðr   c                 ó6   — t        | |j                  «       «      S r   )r€   Úlower)r   Úagg_names     r   Úspatial_aggregate_namez&MySQLOperations.spatial_aggregate_name˜   s   € Ü�t˜XŸ^™^Ó-Ó.Ð.r   N)Ú__name__Ú
__module__Ú__qualname__Únamer   r   ÚAdapterr   r   r   r   r"   r'   rM   rW   Úfunction_namesrw   r{   r†   r’   r–   © r   r   r   r      sÓ   „ Ø€DØÐà€Gàñ0ó ð0ð ñ4ó ð4ð ñ6ó ð6ð ñ6ó ð6ð ñ5ó ð5ð ñó ðð6 ñ,ó ð,ð  $Ø$ñ€Nð
 ñó ðò:òòó /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ôM/Ð+Ð-?õ M/r   