
    A7i
                     H   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 d dlmZmZ d d	lmZmZmZmZ d d
lmZ d dlm Z   ee!      Z" e       Z# eddg      Z$e$jK                  dejL                  e       ed       ed       ed       ed       ee       e eejN                  ejP                              fde)de)dedee   dedefd       Z*e$jW                  dee   ejX                         e	dd       e	ddd       dd!d" ee       e eejN                  ejP                              fd#e-d$e-d%ee)   d&ee)   d'ee)   dedefd(       Z.e$jW                  d)ejX                  e       ee       e eejN                  ejP                              fd*e-dedefd+       Z/e$ja                  d,eejX                         ed       ed       ed       ed       ee       e eejP                  ejN                              fd*e-dee)   dee)   dee   dee   dedefd-       Z1e$ja                  d.ejX                  /       ed       ee       e eejP                  ejN                              fd0e-d1ededefd2       Z2y)3    )Optional)	APIRouterDepends
UploadFileFileFormstatusQueryHTTPException)Session)setup_logger)get_settings)require_roles)get_session)UserRole)ProjectReadProjectDetailReadProjectUpdateResponseProductTemplateInfo)PaginatedResponse)ProjectServicez/api/projectsProjects)prefixtagsz/create)status_coderesponse_model.Nproject_nameclient_nameoverlay_image
logo_imagedbcurrent_userc                 X   K   t        j                  | |||||       d{   }|S 7 w)zR
    Create project and process overlay against all active product templates.
    )r   r   overlay_file	logo_filer#   sessionN)r   create_project)r   r   r    r!   r"   r#   projects          I/var/www/html/story-book/Story-Book-python-api/app/api/routes/projects.pycreate_project_endpointr+      s;      #11!"! G Ns   *(*z/list)r   r      )ge
      )r-   le
created_atdescpagelimitsearchsort_byorderc                     |dvrt        dd      |dvrt        dd      t        j                  || ||||      \  }}t        t           || ||D 	cg c]  }	t	        j
                  |	       c}	      S c c}	w )N)idr   r   r1   
updated_ati  zInvalid sort_by field)ascr2   zInvalid order)r3   r4   r5   r6   r7   )totalr3   r4   items)r   r   list_projectsr   r   from_orm)
r3   r4   r5   r6   r7   r"   r#   rowsr<   rs
             r*   list_projects_endpointrB   *   s     WWC!899O#C11 ..
KD% [)0451{##A&5	  6s   A6z/detail/{project_id}
project_idc                 2   t        j                  ||       \  }}i t        j                  |      j	                         d|D cg c]2  }|d   |d   t        j                  |d         j	                         d4 c}i}t        j                  |      S c c}w )Nimagesr9   final_image_pathproduct_template)r9   rF   rG   )r   get_project_detailr   r?   dictr   r   model_validate)rC   r"   r#   r)   rE   imgresponses          r*   project_detail_endpointrM   L   s     %77JGOGV



w
'
,
,
.
 
 	 $i$'(:$;$7$@$@EWAX$Y$^$^$`
 

H ++H55
s   7Bz/update/{project_id}c           	      V   K   t        j                  ||| ||||       d {   S 7 w)N)r"   r#   rC   r   r   r%   r&   )r   update_project)rC   r   r   r    r!   r"   r#   s          r*   rO   rO   f   s:       ..!!"   s    )')z$/regenerate-image/{product_image_id})r   product_image_idnew_overlay_imagec                 P   K   t        j                  || ||       d {   S 7 w)N)r"   rP   new_overlay_filer#   )r   regenerate_single_image)rP   rQ   r"   r#   s       r*    regenerate_single_image_endpointrU      s1       77)*!	   s   &$&)3typingr   fastapir   r   r   r   r   r	   r
   r   sqlmodelr   app.core.loggingr   app.core.configr   app.api.depsr   app.db.sessionr   app.models.userr   r   app.schemas.projectr   r   r   r   app.schemas.commonr   app.services.project_servicer   __name__loggersettingsrouterpostHTTP_201_CREATED
SUPERADMINADMINstrr+   getHTTP_200_OKintrB   rM   patchrO   rU        r*   <module>rp      sY    \ \ \  ) ( & & & j j 0 7	h	>	/	=YF$;$;KXS	Cy $S	'+Dz+& t

!KL  $	
 	  Y* $[1""   aAraC( )!+& t

!KL
 SM c]	
 C= 	 
: ""$   +& t

!KL666 6
6* (""   #'t*!%d*.t*'+Dz+& tzz4??!KL3- # J'	
 $ 	 
( *""   %)I+& tzz4??!KL	! 	 		ro   