
    Eoh                        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mZmZ d dlmZ d dlmZ d dlmZ  ed	d
g      Zej9                  ded       e	ddd       e	ej:                  dej<                  d       ee      fdededefd       Z ej9                  ded       ee      fdedefd       Z!ejE                  deejF                  d       edd        edd!        ee      fd"ed#edefd$       Z$ejK                  ded%       ee      fded&edefd'       Z&ejO                  deejP                  d(       ee      fdedefd)       Z)y*)+    )
UploadFileFileForm	APIRouterDependsHTTPExceptionstatusQuery)Session)Any)ResponseModel)FileResponseSchemaFileCreateSchemaFileUpdateSchema)file)get_db)	constantsz/filesFiles)prefixtags zGet all files with pagination)response_modelsummary   zPage number to fetch)defaultgedescriptionzNumber of items per page)r   r   ler   pageper_pagedbc                 P    t        j                  || |      }t        |ddd      S )N)r!   r   r       TzFiles fetched successfullydatastatus_codesuccessmessage)file_serviceget_all_filesr   )r   r    r!   paginated_datas       U/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/files/routers/file.py
list_filesr-      s8     "//N
 ,	     z
/{file_id}zGet file by IDfile_idc                 r    t        j                  ||       }t        t        j                  |      ddd      S )Nr#   TzFile fetched successfullyr$   )r)   get_file_by_idr   r   model_validate)r/   r!   file_objs      r,   get_filer4   *   s:    
 **2w7H..x8+	 r.   zCreate file)r   r&   r   .zUploader user ID)r   zFile to uploadcreated_by_idr   c                    K   t        j                  || |       d {   }t        t        j                  |      ddd      S 7 &w)N   Tz&File uploaded and created successfullyr$   )r)   create_filer   r   r2   )r5   r   r!   created_files       r,   r8   r8   8   sI      &11"mTJJL..|<8	  Ks   AA'AzUpdate filepayloadc                 t    t        j                  || |      }t        t        j                  |      ddd      S )Nr#   TzFile updated successfullyr$   )r)   update_filer   r   r2   )r/   r:   r!   updated_files       r,   r<   r<   G   s<      ++BAL..|<+	 r.   zDelete filec                 L    t        j                  ||        t        i ddd      S )Nr#   TzFile deleted successfullyr$   )r)   delete_filer   )r/   r!   s     r,   r?   r?   V   s-    
 R)+	 r.   N)*fastapir   r   FastAPIFiler   r   r   r   r	   r
   sqlalchemy.ormr   typingr   $src.apps.base.schemas.response_modelr   src.apps.files.schemas.filer   r   r   src.apps.files.servicesr   r)   src.core.dependenciesr   	src.utilsr   routergetDEFAULT_PER_PAGEMAX_PER_PAGEintr-   r4   postHTTP_201_CREATEDr8   putr<   deleteHTTP_200_OKr?    r.   r,   <module>rT      s   k k k "  > 
 9 ( 	('	3 B}6UVaA3IJ**!!.	 &/
 	 W. L@PQ &/


 R
 R6;R;R\ijc/AB"34DE&/
 	 k LN &/ 	 O |MvGYGYcpq &/


 r
r.   