
    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jA                  ded       ee      fde#de
fd       Z%ejM                  deejN                  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 Regions)prefixtagszGet all regions with pagination)response_modelsummary   )defaultge)r   r   lepageper_pagepayloaddbc                    K   t        j                  || ||       d {   }t        |t        j                  dd      S 7 !w)N)r$   r!   r"   r#   TzRegions fetched successfullydatastatus_codesuccessmessage)region_serviceget_all_regionsr   r   HTTP_200_OK)r!   r"   r#   r$   r'   s        V/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/base/routers/region.pylist_regionsr/      sG       //2D8]deeD&&.	  fs   AA"Az/{region_id}zGet region by id	region_idc                    K   t        j                  ||        d {   }t        t        j                  |      t
        j                  dd      S 7 4w)NTzRegion fetched successfullyr&   )r+   get_region_by_idr   r   from_ormr   r-   )r0   r$   r   s      r.   
get_regionr4   )   sK     !222yAAF%%f-&&-	  B   AA5AzCreate region)r   r(   r   c                    K   t        j                  ||        d {   }t        t        j                  |      t
        j                  dd      S 7 4w)NTzRegion created successfullyr&   )r+   create_regionr   r   r3   r   HTTP_201_CREATED)r#   r$   createds      r.   r7   r7   4   sJ     "00W==G%%g.++-	  >r5   zUpdate regionc                    K   t        j                  || |       d {   }t        t        j                  |      t
        j                  dd      S 7 4w)NTzRegion updated successfullyr&   )r+   update_regionr   r   r3   r   r-   )r0   r#   r$   updateds       r.   r;   r;   ?   sM     "00YHHG%%g.&&-	  Is   AA5AzDelete regionc                    K   t        j                  ||        d {    t        i t        j                  dd      S 7 !w)NTzRegion deleted successfullyr&   )r+   delete_regionr   r   r-   )r0   r$   s     r.   r>   r>   J   s@     

&
&r9
555&&-	  6s   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/   r4   postr8   r7   putr;   deleter>        r.   <module>rS      s     5 5 "	 	 	 ? ; ( , 	"I;	/B}6WXaA&)"<"<yG]G]^"))&/	
   		 Y N=BTU3:6?    V R6;R;R\klCJ6? !3   m N=/RSZ[aSb 3 1C   S ~m_U6=fo 3 G  VrR   