§
    »`j¥  ã                   ó”  — d 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 ddlmZmZ ddlmZmZ ddlmZ  e¦   «         Ze                     d	¦  «         ed
d
¬¦  «         edd
d¬¦  «         ed¦  «         ed¦  «         ee	¦  «        fdededee         dee         def
d„¦   «         Ze                     d	¦  «         ee	¦  «        fdedefd„¦   «         Ze                     d¦  «         ee	¦  «        fdedefd„¦   «         Ze                     d¦  «         ee	¦  «        fdededefd„¦   «         Ze                     d¦  «         ee	¦  «        fdedefd„¦   «         Z e                     d¦  «         ee	¦  «        fdededefd„¦   «         Z!e                     d ¦  «         ee	¦  «        fdedefd!„¦   «         Z"dS )"uz   
Projects route â€“ full CRUD + generate action.
Generate now dispatches a real BackgroundTask instead of a TODO comment.
é    )ÚOptional)Ú	APIRouterÚDependsÚQueryÚBackgroundTasks)Úrequire_auth)Úprojects_storeÚavatars_store)ÚProjectCreateÚProjectUpdate)ÚokÚerr)Úrun_pipelineú/é   )Úgeé
   éd   )r   ÚleNÚpageÚper_pageÚsearchÚstatusÚ_c              ƒ   óf   K  — t          j        |rd|ind |g d¢| |¬¦  «        }t          |¦  «        S )Nr   )ÚtitleÚscriptÚdescription)Úfiltersr   Úsearch_fieldsr   r   )r	   Úlistr   )r   r   r   r   r   Úresults         úk/Users/priyanka/Documents/AI_Agent_Assessment/ai-video-generator-gols-v2-new/backend/app/routes/projects.pyÚlist_projectsr$      sP   è è € õ Ô Ø&,Ð6�˜6Ð"Ð"°$ØÐ%GÐ%GÐ%GØ˜Hðñ ô €Fõ
 ˆf‰:Œ:Ðó    Úbodyc              ƒ   óÞ   K  — t          j        | j        ¦  «        st          dd¦  «        S t	          j        i |                      ¦   «         ¥ddddd d d d dœ¥¦  «        }t          |d¦  «        S )	NzAvatar not foundé”  ÚdraftÚidlezNot startedr   )r   ÚstageÚstage_labelÚprogressÚ
output_urlÚvideo_idÚduration_secÚerrorzProject created)r
   ÚgetÚ	avatar_idr   r	   ÚcreateÚ
model_dumpr   )r&   r   Úprojects      r#   Úcreate_projectr7       s�   è è € åÔ˜Tœ^Ñ,Ô,ð ,ÝÐ% sÑ+Ô+Ð+ÝÔ#ð 
%Ø
�/Š/Ñ
Ô
ð
%àØØ$ØØØØØð
%ð 
%ð 
%ñ 
ô 
€Gõ ˆgÐ(Ñ)Ô)Ð)r%   z/{pid}Úpidc              ƒ   óp   K  — t          j        | ¦  «        }|rt          |¦  «        nt          dd¦  «        S )Nú	Not foundr(   )r	   r2   r   r   ©r8   r   Úps      r#   Úget_projectr=   2   s5   è è € åÔ˜3ÑÔ€AØÐ0�2ˆa‰5Œ5ˆ5�3˜{¨CÑ0Ô0Ð0r%   c              ƒ   óÔ   K  — d„ |                      ¦   «                              ¦   «         D ¦   «         }t          j        | |¦  «        }|rt	          |d¦  «        nt          dd¦  «        S )Nc                 ó   — i | ]
\  }}|®||“ŒS )N© )Ú.0ÚkÚvs      r#   ú
<dictcomp>z"update_project.<locals>.<dictcomp>:   s   € ÐKÐKÐK™˜˜1¸Q¸]ˆq�!¸]¸]¸]r%   ÚUpdatedr:   r(   )r5   Úitemsr	   Úupdater   r   )r8   r&   r   Úupdatesr<   s        r#   Úupdate_projectrI   8   se   è è € àKÐK §¢Ñ 1Ô 1× 7Ò 7Ñ 9Ô 9ÐKÑKÔK€GÝÔ˜c 7Ñ+Ô+€AØ Ð;�2ˆa�ÑÔÐ¥c¨+°sÑ&;Ô&;Ð;r%   c              ƒ   ón   K  — t          j        | ¦  «        rt          d d¦  «        nt          dd¦  «        S )NÚDeletedr:   r(   )r	   Údeleter   r   )r8   r   s     r#   Údelete_projectrM   ?   s6   è è € å"0Ô"7¸Ñ"<Ô"<ÐW�2ˆd�IÑÔÐÅ#ÀkÐSVÑBWÔBWÐWr%   z/{pid}/generateÚbackground_tasksc           	   ƒ   óP  K  — t          j        | ¦  «        }|st          dd¦  «        S |d         dk    rt          d¦  «        S |d         dk    rt          d¦  «        S t          j        | ddd	d
ddœ¦  «         |                     t
          | ¦  «         t          | ddœd¦  «        S )z„
    Kick off video generation as a background task.
    Returns immediately with status=queued; client should poll GET /{pid}.
    zProject not foundr(   r   Ú
processingzAlready processingÚ	completedu:   Already completed â€“ duplicate or re-create to regenerateÚqueuedu   Queued â€“ starting soonâ€¦r   N)r   r+   r,   r-   r1   )Úidr   zGeneration started)r	   r2   r   rG   Úadd_taskr   r   )r8   rN   r   r<   s       r#   ÚgeneraterU   D   sÐ   è è € õ 	Ô˜3ÑÔ€AØð -ÝÐ&¨Ñ,Ô,Ð,Øˆ„{�lÒ"Ð"ÝÐ'Ñ(Ô(Ð(Øˆ„{�kÒ!Ð!ÝÐOÑPÔPÐPõ Ô˜#ØØØ4ØØð ð  ñ ô ð ð ×Ò�l¨CÑ0Ô0Ð0Ý�S HÐ-Ð-Ð/CÑDÔDÐDr%   z/{pid}/statusc              ƒ   óÄ  K  — t          j        | ¦  «        }|st          dd¦  «        S t          |d         |                     d¦  «        |                     d¦  «        |                     dd¦  «        |                     dd	¦  «        |                     d
¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        dœ	¦  «        S )uE   Lightweight polling endpoint â€“ returns just status/progress fields.r:   r(   rS   r   r+   r,   Ú r-   r   r1   r/   r.   r0   )	rS   r   r+   r,   r-   r1   r/   r.   r0   )r	   r2   r   r   r;   s      r#   Ú
get_statusrX   `   sÉ   è è € õ 	Ô˜3ÑÔ€AØð %Ý�; Ñ$Ô$Ð$ÝØ˜”wØ—u’u˜X‘”Ø—u’u˜W‘~”~Ø—u’u˜]¨BÑ/Ô/Ø—u’u˜Z¨Ñ+Ô+Ø—u’u˜W‘~”~Ø—u’u˜ZÑ(Ô(Ø—u’u˜\Ñ*Ô*Ø—u’u˜^Ñ,Ô,ð
ð 
ñ 
ô 
ð 
r%   )#Ú__doc__Útypingr   Úfastapir   r   r   r   Úapp.middleware.authr   Úapp.repository.storer	   r
   Úapp.schemas.schemasr   r   Úapp.utils.responser   r   Úapp.services.pipeliner   Úrouterr2   ÚintÚstrr$   Úpostr7   r=   ÚputrI   rL   rM   rU   rX   r@   r%   r#   ú<module>rf      s`  ððð ð Ð Ð Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø .Ð .Ð .Ð .Ð .Ð .à	ˆ‰Œ€ð ‡‚ˆC�„à��a˜A�‘”Ø�E˜"  sÐ+Ñ+Ô+Ø!˜E $™KœKØ!˜E $™KœKØˆW�\Ñ"Ô"ðð Ø
ðàðð �SŒMðð �SŒMð	ð
 ðð ð ñ „ðð ‡‚ˆSÑÔØ7>°w¸|Ñ7LÔ7Lð *ð *˜}ð *°ð *ð *ð *ñ Ôð*ð" ‡‚ˆHÑÔØ)0¨°Ñ)>Ô)>ð 1ð 1˜3ð 1 3ð 1ð 1ð 1ñ Ôð1ð
 ‡‚ˆHÑÔØAHÀÈÑAVÔAVð <ð <˜cð <¨ð <¸3ð <ð <ð <ñ Ôð<ð ‡‚ˆxÑÔØ,3¨G°LÑ,AÔ,Að Xð X˜cð X cð Xð Xð Xñ ÔðXð ‡‚ÐÑÔØIPÈÐQ]ÑI^ÔI^ð Eð E˜ð E¨ð EÀ3ð Eð Eð Eñ  ÔðEð6 ‡‚ˆOÑÔØ(/¨°Ñ(=Ô(=ð ð ˜#ð  #ð ð ð ñ Ôðð ð r%   