
    Ѯhb                        d dl mZ g dZd dlmZmZ d dlmZmZm	Z	m
Z
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mZmZmZ d dlmZmZ d dlmZm Z m!Z! d dl"m#Z#  e
dee$ef         Z%	 	 	 	 ddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ&	 	 	 	 ddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ'e	 	 dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z(	 	 dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ)	 	 dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ*y)    )annotations)	apaginateapaginate_aggregatepaginatepaginate_aggregate)MappingSequence)AnyLiteralOptionalTypeVarUnion)AsyncCollection)
Collection)AbstractParams)Config)get_mongo_pipeline_filter_end)flow	flow_exprrun_async_flowrun_sync_flow)create_page_flowgeneric_flow)AdditionalDataItemsTransformerSyncItemsTransformer)verify_paramsT)boundN)transformeradditional_dataconfigc                    xs i t        t        t         fd      t         fd      ||||            S )Nc                 &     j                        S Ncount_documents
collectionquery_filters   p/home/www/academy-backend.kofcorporation.com/venv/lib/python3.12/site-packages/fastapi_pagination/ext/pymongo.py<lambda>zpaginate.<locals>.<lambda>,       )C)CL)Q     c                x     j                   f| j                  | j                  dj                         S N)skiplimitsortfindoffsetr2   to_list
raw_paramsr)   filter_fieldskwargsr*   r3   s    r+   r,   zpaginate.<locals>.<lambda>.   J    ?:?? !$ $**$**$ $ ') r.   
total_flowlimit_offset_flowparamsr    r!   r"   )r   r   r   	r)   r*   r:   r@   r3   r    r!   r"   r;   s	   ``` `   `r+   r   r      sH      %2L !QR'	 #+	
 r.   c                   K   xs i t        t        t         fd      t         fd      ||||             d {   S 7 w)Nc                 &     j                        S r%   r&   r(   s   r+   r,   zapaginate.<locals>.<lambda>O   r-   r.   c                x     j                   f| j                  | j                  dj                         S r0   r4   r8   s    r+   r,   zapaginate.<locals>.<lambda>Q   r<   r.   r=   )r   r   r   rA   s	   ``` `   `r+   r   r   ?   sV       %2L !QR'	 #+	
   s   AAA	A)r    r!   aggregation_filter_endr"   c          	   #  B  K   t        |d      \  }}|xs g }g }	|j                  .|	j                  d|j                  |j                  xs dz   i       |j                  |	j                  d|j                  i       |+|dk(  rt	        |      }|d | }
||d  }|	j                  |
       |j                  g |dddig|	d	i      }|j                  d 
      ^}}|d   }	 |d   d   d   }t        |||||||       E d {   }|S # t        $ r d}Y )w xY w7 w)Nzlimit-offsetz$limitr   z$skipautoz$facetz$counttotal)metadatadata)lengthrJ   rI   )rH   r    r!   r"   async_)
r   r2   appendr6   r   extend	aggregater7   
IndexErrorr   )is_asyncr)   aggregate_pipeliner@   r    r!   rE   r"   r9   paginate_datatransform_partcursorrJ   _itemsrH   pages                    r+   _aggregate_flowrY   b   s     'v~>FJ+1rM#h
(8(8J<M<M<RQR(STU$gz'8'89:)!V+%BCU%V"+,C-CD/0F0GH^,''	
	
 "*G!4 5)	

 
F ^^4^00HD1LEZ #G, '' D K  s6   C"D%D 0DDDDDDDc               ^   K   t        t        d| |xs g |||||             d {   S 7 w)NTrQ   r)   rR   r@   r    r!   rE   r"   )r   rY   r)   rR   r@   r    r!   rE   r"   s          r+   r   r      sD       !17R#+#9		
   s   $-+-c               B    t        t        d| |xs g |||||            S )NFr[   )r   rY   r\   s          r+   r   r      s6     !17R#+#9		
 r.   )NNNN)r)   Collection[T]r*   Optional[dict[Any, Any]]r:   r_   r@   Optional[AbstractParams]r3   Optional[Sequence[Any]]r    Optional[SyncItemsTransformer]r!   Optional[AdditionalData]r"   Optional[Config]r;   r
   returnr
   )r)   AsyncCollection[T]r*   r_   r:   r_   r@   r`   r3   ra   r    Optional[ItemsTransformer]r!   rc   r"   rd   r;   r
   re   r
   )NN)rQ   boolr)   z(Union[Collection[T], AsyncCollection[T]]rR   Optional[list[dict[Any, Any]]]r@   r`   r    rg   r!   rc   rE   %Optional[Union[int, Literal['auto']]]r"   rd   re   r
   )r)   rf   rR   ri   r@   r`   r    rg   r!   rc   rE   rj   r"   rd   re   r
   )r)   r^   rR   ri   r@   r`   r    rb   r!   rc   rE   rj   r"   rd   re   r
   )+
__future__r   __all__collections.abcr   r	   typingr
   r   r   r   r   pymongo.asynchronous.collectionr   pymongo.collectionr   fastapi_pagination.basesr   fastapi_pagination.configr   fastapi_pagination.ext.utilsr   fastapi_pagination.flowr   r   r   r   fastapi_pagination.flowsr   r   fastapi_pagination.typesr   r   r   fastapi_pagination.utilsr   strr   r   r   rY   r   r    r.   r+   <module>rz      s   " . 9 9 ; ) 3 , F R R C [ [ 2CwsCx()
 .2.2'+$(  3704#  *  ,  %	 
 "  0  .      	 J .2.2'+$(  /304# " *  ,  %	 
 "  ,  .      	 F  :>'+	9 /304DH#9989 79 %	9 ,9 .9 B9 9 	9 9| :>'+
 /304DH#"6 %
 , . B  	4 :>'+
 3704DH#6 %
 0 . B  	r.   