
    >ȋh<                     ~    d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
  G d de          Z G d d	e          Zd
S )    )NotSupportedError)FuncValue)	TextField)	JSONField)Castc                   H     e Zd ZdZ e            Z fdZd Zd Zd Z	 xZ
S )	JSONArray
JSON_ARRAYc                 p    |j         j        st          d           t                      j        ||fi |S )Nz6JSONFields are not supported on this database backend.)featuressupports_json_fieldr   superas_sqlselfcompiler
connectionextra_context	__class__s       \/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/db/models/functions/json.pyr   zJSONArray.as_sql   sH    "6 	#H   uww~h
DDmDDD    c          	          t          |                                           dk    rdnd} | j        ||fdd| d| di|S )Nr   zNULL ON NULL templatez%(function)s(%(expressions)s z RETURNING ))lenget_source_expressionsr   )r   r   r   	returningr   null_on_nulls         r   	as_nativezJSONArray.as_native   su    
 *-T-H-H-J-J)K)Ka)O)O~~UWt{
 
 VUUUUU	
 
 
 	
r   c                     |                                  }|                    d |                                D                        |j        j        r |j        ||fddi|S  |j        ||fddi|S )Nc                 f    g | ].}t          |t                    r|nt          ||j                  /S  )
isinstancer   output_field).0
expressions     r   
<listcomp>z+JSONArray.as_postgresql.<locals>.<listcomp>)   sN         "*d33CJJj**ABB  r   r   JSONBfunctionJSONB_BUILD_ARRAY)copyset_source_expressionsr   r   is_postgresql_16r!   r   )r   r   r   r   
casted_objs        r   as_postgresqlzJSONArray.as_postgresql#   s     YY[[
))  #-"C"C"E"E  
	
 
	
 
	
 / 	':'* 07;H   !z 
 
 )
 	
 
 	
r   c                 $     | j         ||fddi|S Nr   CLOBr!   r   r   r   r   s       r   	as_oraclezJSONArray.as_oracle@   #    t~h
VVfVVVVr   )__name__
__module____qualname__r+   r   r&   r   r!   r1   r7   __classcell__r   s   @r   r
   r
      s        H9;;LE E E E E
 
 
 
 
 
:W W W W W W Wr   r
   c                   \     e Zd ZdZ e            Z fdZ fdZd Zd Z	 fdZ
d Z xZS )
JSONObjectJSON_OBJECTc                     g }|                                 D ])\  }}|                    t          |          |f           * t                      j        |  d S )N)itemsextendr   r   __init__)r   fieldsexpressionskeyvaluer   s        r   rD   zJSONObject.__init__H   s_     ,,.. 	4 	4JCc

E23333+&&&&r   c                 p    |j         j        st          d           t                      j        ||fi |S )Nz7JSONObject() is not supported on this database backend.)r   has_json_object_functionr   r   r   r   s       r   r   zJSONObject.as_sqlN   sH    "; 	#I   uww~h
DDmDDDr   c                     t          |d d d         |dd d         d          }d                    d |D                       S )N      T)strictz, c                 $    g | ]\  }}d | d| S )(z) VALUE r$   )r'   rG   rH   s      r   r)   z#JSONObject.join.<locals>.<listcomp>X   s-    KKKzsE2c22522KKKr   )zipjoin)r   argspairss      r   rR   zJSONObject.joinU   sK    D1ItADqDz$777yyKKUKKKLLLr   c                .     | j         ||f| d| dd|S )Nz'%(function)s(%(expressions)s RETURNING r   )
arg_joinerr   )r   )r   r   r   r   r   s        r   r!   zJSONObject.as_nativeZ   sE    t{
 KyKKK	
 

 
 
 	
r   c                 *   |                                  }|                    d t          |                                          D                        |j        j        r |j        ||fddi|S  t          t          |          j	        ||fddi|S )Nc                 b    g | ],\  }}|d z  dk    rt          |t                                n|-S )rL   r   )r   r   )r'   indexr(   s      r   r)   z,JSONObject.as_postgresql.<locals>.<listcomp>i   sK       %E: 27aZ---Z  r   r   r*   r+   JSONB_BUILD_OBJECT)
r-   r.   	enumerater   r   r/   r!   r   r?   r   )r   r   r   r   r-   r   s        r   r1   zJSONObject.as_postgresqlc   s     yy{{## )243N3N3P3P)Q)Q  	
 	
 	
 / 	!4>* 07;H   .uZ&&-
 
 *
 	
 
 	
r   c                 $     | j         ||fddi|S r3   r5   r6   s       r   r7   zJSONObject.as_oracle{   r8   r   )r9   r:   r;   r+   r   r&   rD   r   rR   r!   r1   r7   r<   r=   s   @r   r?   r?   D   s        H9;;L' ' ' ' 'E E E E EM M M

 
 

 
 
 
 
0W W W W W W Wr   r?   N)	django.dbr   django.db.models.expressionsr   r   django.db.models.fieldsr   django.db.models.fields.jsonr   django.db.models.functionsr   r
   r?   r$   r   r   <module>rb      s    ' ' ' ' ' ' 4 4 4 4 4 4 4 4 - - - - - - 2 2 2 2 2 2 + + + + + +9W 9W 9W 9W 9W 9W 9W 9Wx8W 8W 8W 8W 8W 8W 8W 8W 8W 8Wr   