
    h                        d dl mZmZmZmZ d dlmZmZ d dlm	Z	 d dl
mZmZmZmZ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   e       Z!e!jE                  d
e d       e        edd       eddd       eejF                  dejH                  d       ee      fdede%de&de&de	f
d       Z'e!jE                  dd       e        ee      fdede	fd       Z(e!jS                  d
e ejT                  d        ee      fdede	fd!       Z+e!jS                  d"e ejT                  d#        ee      fdede	fd$       Z,e!j[                  d"e d%       ee      fdede	fd&       Z.e!jE                  d'e d(       ee      fd)e&de	fd*       Z/e!ja                  d'e d+       ee      fd)e&dede	fd,       Z1e!j[                  d'e d-       ee      fd)e&de	fd.       Z2y/)0    )	APIRouterDependsHTTPExceptionstatus)PathQuery)Session)ProducerNoiseAdditionSchemaProducerNoiseFilterSchemaProducerNoiseOutputSchemaProducerNoiseUpdateSchema!ProducerNoiseAdditionWithWineDBId)create_producer_noiseupdate_producer_noiseget_all_producer_noisesget_producer_noise_by_iddelete_producer_noise%create_producer_noise_with_wine_db_id#remove_producer_noise_by_wine_db_iddownload_noise_service)get_db)	constants)get_current_user)ResponseModel zGet all producer noises)response_modelsummaryz-date_createdzHSort by fields, use '-' for descending order (e.g., -date_created,noise))defaultdescription   zPage number)r   ger   zItems per page)r   r!   ler   payloadsort_bypageper_pagedbc           	         K   t        |||| |r|j                  d      ng        d {   }t        |t        j                  dd      S 7 !w)N,)r%   r&   r#   r$   TzRecord fetched successfullydatastatus_codesuccessmessage)r   splitr   r   HTTP_200_OK)r#   r$   r%   r&   r'   responses         g/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/wine/producer/routers/producer_noise.pyget_all_producer_noises_listr3      sY       ,
&-c"2 H &&-	 s   'AA"Az	/downloadz#Download all producer noise entries)r   c                 8   K   t        ||        d{   S 7 w)aR  
    Download all producer noise entries based on the provided filter criteria.
    Args:
        payload (ProducerNoiseFilterSchema): Filter criteria for producer noises.
        db (Session): Database session dependency.
    Returns:
        StreamingResponse: A streaming response containing the producer noise data in TSV format.
    )r'   r#   N)r   )r#   r'   s     r2   download_producer_noise_listr5   <   s      (2w????s   zCreate a new producer noise)r   r,   r   c                 p   K   t        ||        d {   }t        |t        j                  dd      S 7 !w)NTz#Producer noise created successfullyr*   )r   r   r   HTTP_201_CREATEDr#   r'   	new_noises      r2   create_new_producer_noiser:   K   s;     
 ,B88I++5	  9   64"6z/by-wine-db-idz Add producer noise by Wine DB IDc                 p   K   t        ||        d {   }t        |t        j                  dd      S 7 !w)NTz!Producer noise added successfullyr*   )r   r   r   r7   r8   s      r2    add_producer_noise_by_wine_db_idr=   X   s<     
 <BHHI++3	  Ir;   z#Remove producer noise by Wine DB IDc                 p   K   t        ||        d {   }t        |t        j                  dd      S 7 !w)NTz#Producer noise removed successfullyr*   )r   r   r   r0   )r#   r'   r+   s      r2   )remove_producer_noise_by_wine_db_id_entryr?   e   s<     
 5RAAD&&5	  Br;   z/{producer_noise_id}zGet producer noise by IDproducer_noise_idc                    K   t        ||        d {   }t        t        j                  |      t        j
                  dd      S 7 4w)NTz#Producer noise fetched successfullyr*   )r   r   r   model_validater   r0   )r@   r'   noises      r2   get_producer_noiserD   r   sH     
 +2/@AAE&55e<&&5	  Bs   A	A5A	zUpdate a producer noisec                 r   K   t        || |       d {   }t        |t        j                  dd      S 7 !w)NTz#Producer noise updated successfullyr*   )r   r   r   r0   )r@   r#   r'   updated_noises       r2   update_producer_noise_entryrG      s?      04EwOOM&&5	  Ps   75"7zDelete a producer noisec                 p   K   t        ||        d {   }t        |t        j                  dd      S 7 !w)NTz#Producer noise deleted successfullyr*   )r   r   r   r0   )r@   r'   r+   s      r2   delete_producer_noise_entryrI      s<     
 'r+<==D&&5	  >r;   N)3fastapir   r   r   r   fastapi.paramsr   r   sqlalchemy.ormr	   -src.apps.wine.producer.schemas.producer_noiser
   r   r   r   r   .src.apps.wine.producer.services.producer_noiser   r   r   r   r   r   r   r   src.core.dependenciesr   	src.utilsr   src.utils.guardr   $src.apps.base.schemas.response_modelr   routergetDEFAULT_PER_PAGEMAX_PER_PAGEstrintr3   r5   postr7   r:   r=   deleter?   rD   putrG   rI        r2   <module>r^      s   = = & " 	 	 	 )  , >	 B}6OP)0^ aA=A**!!$	 &/&   	 Q< K!FG)0&/@&@@ H@ R6;R;R\yz &/
(

 {
 mI`I`  kM  N &/
.

 N
 Glm &/
.

 n
 "=Jde &/


 f
 "=Jcd &/& 	 e %mMfg &/


 h
r]   