Ë
    ¹ûàg¼  ã                   óˆ   — 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    úm/var/www/skyplay_api_hub/venv/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  — 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°{Ô"CˆI�hÑØÐr   c                 ó6  — t         j                  t         j                  t         j                  t         j                  g}| j
                  j                  }|s| j
                  j                  dk  r |j                  dt         j                  «       t        |«      S )N)é   r   é   r   )r   ÚExtentÚExtent3DÚMakeLineÚUnionr   r   Úmysql_versionÚinsertr$   Útuple)r   Údisallowed_aggregatesÚ
is_mariadbs      r   rP   z%MySQLOperations.disallowed_aggregates>   sm   € ô �M‰MÜ�O‰OÜ�O‰OÜ�L‰Lð	!
Ðð —_‘_×5Ñ5ˆ
Ù˜Ÿ™×6Ñ6¸ÒCØ!×(Ñ(¨¬F¯N©NÔ;ÜÐ*Ó+Ð+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ÚClosestPointÚBoundingCircleÚForcePolygonCWÚPointOnSurfaceÚLineLocatePointÚGeometryDistancerg   ÚGeoHashÚIsValid)r   r   ÚremoveÚupdate)r   Úunsupporteds     r   Úunsupported_functionsz%MySQLOperations.unsupported_functionsP   s@   € ò
ˆð* �?‰?×+Ò+Ø×ÑÐ/Ô0Ø×Ñ 	¨9Ð5Ô6ØÐr   c                 ó   — |j                   S r   )Ú	geom_type)r   Úfs     r   Úgeo_db_typezMySQLOperations.geo_db_typel   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   rr   ÚvalueÚlookup_typeÚ
dist_params        r   Úget_distancezMySQLOperations.get_distanceo   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   )rx   Ú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'   rE   rP   Úfunction_namesro   rs   r~   rŠ   rŽ   © r   r   r   r      sÓ   „ Ø€DØÐà€Gàñ0ó ð0ð ñ4ó ð4ð ñ6ó ð6ð ñ6ó ð6ð ñ5ó ð5ð ñó ðð, ñ
,ó ð
,ð $Ø$ñ€Nð
 ñó ðò6òòó /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ôC/Ð+Ð-?õ C/r   