
    Jh!              
          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
 d dlmZmZmZ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  eddg      ZejA                  ded       edd       eejB                  dejD                         ee       e       fde#de#de
defd       Z$ejK                  deejL                  d       ee      fdede
fd       Z'ejA                  ded       ee      fde#de
fd       Z(ejS                  ded       ee      fde#dede
fd        Z*ejW                  ded!       ee      fde#de
fd"       Z,y#)$    )Optional)UUID)	APIRouterDependsQuerystatus)Session)RegionCreateSchemaRegionOutSchemaRegionUpdateSchemaSubRegionCreateSchemaSubRegionOutSchemaSubRegionUpdateSchemaSubRegionFilterSchemaRegionFilterSchema)ResponseModel)region)get_db)APIException)	constants zSub-Regions)prefixtagsz#Get all sub-regions with pagination)response_modelsummary   )defaultge)r   r   lepageper_pagedbpayloadc                    K   t        j                  || ||       d {   }t        |t        j                  dd      S 7 !w)N)r"   r    r!   r#   Tz Sub-regions fetched successfullydatastatus_codesuccessmessage)region_serviceget_all_sub_regionsr   r   HTTP_200_OK)r    r!   r"   r#   r&   s        Z/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/base/routers/sub_region.pylist_sub_regionsr.      sG       33rxahiiD&&2	  js   AA"AzCreate sub-region)r   r'   r   c                    K   t        j                  ||        d {   }t        t        j                  |      t
        j                  dd      S 7 4w)NTzSub-region created successfullyr%   )r*   create_sub_regionr   r   from_ormr   HTTP_201_CREATED)r#   r"   createds      r-   r0   r0   )   sM      #44RAAG((1++1	  B   AA5Az/{sub_region_id}zGet sub-region by idsub_region_idc                    K   t        j                  ||        d {   }t        t        j                  |      t
        j                  dd      S 7 4w)NTzSub-region fetched successfullyr%   )r*   get_sub_region_by_idr   r   r1   r   r,   )r5   r"   
sub_regions      r-   get_sub_regionr9   5   sK     %::2}MMJ((4&&1	  Nr4   zUpdate sub-regionc                    K   t        j                  || |       d {   }t        t        j                  |      t
        j                  dd      S 7 4w)NTzSub-region updated successfullyr%   )r*   update_sub_regionr   r   r1   r   r,   )r5   r#   r"   updateds       r-   r;   r;   ?   sM     "44RPPG((1&&1	  Qs   AA5AzDelete sub-regionc                    K   t        j                  ||        d {    t        i t        j                  dd      S 7 !w)NTzSub-region deleted successfullyr%   )r*   delete_sub_regionr   r   r,   )r5   r"   s     r-   r>   r>   I   s@     

*
*2}
===&&1	  >s   A >"A N)-typingr   uuidr   fastapir   r   r   r   sqlalchemy.ormr	   src.apps.base.schemas.regionr
   r   r   r   r   r   r   r   $src.apps.base.schemas.response_modelr   src.apps.base.servicesr   r*   src.core.dependenciesr   src.core.exceptionsr   	src.utilsr   routergetDEFAULT_PER_PAGEMAX_PER_PAGEintr.   postr2   r0   r9   putr;   deleter>        r-   <module>rS      s     5 5 "	 	 	 ? ; ( , 	"M?	3 B}6[\aA&)"<"<yG]G]^&/%,Y	
 	 #	 ] }&2I2ISf   KRRX/ %:   }F\];B6?    ^ }FYZ^efl^m 3 9N T[  [ !-I\]>Efo 3 G  ^rR   