o
    `h                     @   sn  d dl 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Zd dlmZ ed	ed
dZejddgddd Zejddgddd Zejddgddd Zejddgddd Zejddgddd Zejd dgdd!d" Zejd#dgdd$d% Zejd&dgdd'd( Zejd)dgdd*d+ Zejd,dgdd-d. ZdS )/    )	Blueprintrequestjsonify)client)load_pdf)split_and_store)get_character_by_idupdate_character_by_idget_characters_by_client_id)datetimeN)ObjectId	characterz/api)
url_prefixz/create-characterPOST)methodsc               
   C   s   t  } z5td }|d }| dr#|| }tddt|jdW S | dd  || }tddt|jdW S  t	yV } ztdt|d	d
fW  Y d }~S d }~ww )Ncharacter_testcharacter_descriptions	client_idTprivate)successtypeZ
insertedIdpublicFr   error  )
r   get_jsonr   get
insert_oner   strinserted_idpop	Exception)datadb
collectionresulterr r'   9/var/www/html/aiverses.in/BackEnd/app/character/routes.pycreate_character   s   


"r)   z/delete-characterDELETEc               
   C   s   t jd} | stddidfS zRtd }|d }|d| i}|jdkr.tddid	fW S td
 }|d d| i |d d| i |d d| i td }|d d| i tddidfW S  ty~ } ztdt	|idfW  Y d }~S d }~ww )Ncharacter_idr   character_id is required  r   r   r   Character not found  narrative_design_testmannual_triggerssectionstriggers
save_nodesdetailsmessagez2Character and related details deleted successfully   r   )
r   argsr   r   r   
delete_onedeleted_countdelete_manyr!   r   )r+   r#   character_collectionr%   Znarrative_dbZsave_nodes_dbr   r'   r'   r(   delete_character   s(   
 r=   z/get-characterGETc               
   C   s   t jd} | stddidfS z'td }|d }|d| i}|s+tddidfW S t|d	 |d	< t|W S  tyS } ztdt|id
fW  Y d }~S d }~ww )Nr+   r   r,   r-   r   r   r.   r/   _idr   )r   r8   r   r   r   find_oner   r!   )r+   r#   r$   r   r   r'   r'   r(   get_character4   s   
 rA   z/recent-charactersc               
   C   s   z't d } | d }t| dgd}|D ]
}t|d |d< qt|W S  tyB } ztdt|dW  Y d }~S d }~ww )Nr   r   )r?      r?   Fr   )r   listfindsortlimitr   r   r!   )r#   r$   Zrecent_characterscharr&   r'   r'   r(   get_recent_charactersD   s   
rI   z/save-characterPUTc               
   C   s   t  } | d}|stddidfS z/td }|d }|jd|id| idd	}|s3tdd
idfW S t|d |d< td|dW S  ty_ } ztdt|ddfW  Y d }~S d }~ww )Nr+   r   r,   r-   r   r   z$setT)return_documentr.   r/   r?   )r   responseFr   r   )r   r   r   r   r   find_one_and_updater   r!   )r"   r+   r#   r$   r%   r   r'   r'   r(   save_characterP   s(   
"rN   z/client/<client_id>/charactersc              
   C   sT   zt | }td|dW S  ty) } ztdt|ddfW  Y d}~S d}~ww )z)Get all characters for a specific client.T)r   
charactersFr   r   N)r
   r   r!   r   )r   rO   er'   r'   r(   get_client_characterse   s   
rQ   z/uploadc               
   C   s   t jd} t jd}| r|stddddfS zt| }tt||}td|dW S  tyE } ztdt	|dd	fW  Y d }~S d }~ww )
Nfiler+   FzMissing file or character_idr   r-   T)r   r6   r   )
r   filesr   formr   r   r   r   r!   r   )rR   r+   docsr6   rP   r'   r'   r(   
upload_pdft   s    rV   z/<character_id>c              
   C   s   t jd}zt| |}td|dW S  ty0 } ztdt|ddfW  Y d }~S d }~w tyL } ztdt|ddfW  Y d }~S d }~ww )Nr   Tr   r   Fr   r/   r   )r   r8   r   r   r   
ValueErrorr   r!   )r+   r   rH   rP   r'   r'   r(   fetch_character   s   
""rY   z /update_character/<character_id>c              
   C   s^   t  pi }zt| |}td|dW S  ty. } ztdt|ddfW  Y d }~S d }~ww )NTrW   Fr   r   )r   r   r	   r   r!   r   )r+   r"   updatedrP   r'   r'   r(   update_character   s   
 r[   z/toggle_buttonc                  C   s\   t  } | d}|stddidfS t|}t|d  }t|d|i t||ddfS )	z+Toggle button state for character via HTTP.r+   r   z"Invalid data: character_id missingr-      toggle_button)r+   Zbutton_enabledr7   )r   r   r   r   r   boolr	   )r"   r+   Zcharacter_dataZupdated_stater'   r'   r(   toggle_button_http   s   
r_   )flaskr   r   r   app.corer   Z&app.database.vector_embedings.load_pdfr   Z-app.database.vector_embedings.split_and_storer   app.database.fetch_datar   r	   r
   r   uuidbsonr   __name__character_bprouter)   r=   rA   rI   rN   rQ   rV   rY   r[   r_   r'   r'   r'   r(   <module>   s:    









