§
    lîßi¨  ã                   óü   — d dl mZmZ d dlmZ  eddg¬¦  «        ZdddœZe                     d	¦  «        d
„ ¦   «         Ze                     d¦  «        d„ ¦   «         Z	e 
                    d¦  «        d„ ¦   «         ZdS )é    )Ú	APIRouterÚHTTPException)Ú	schedulerz/api/v1/botÚbot)ÚprefixÚtagsFÚ
SIMULATION)ÚrunningÚmodez/startc               ƒ   óÖ   K  — t           d         rdddœS t          j        st          dd¬¦  «        ‚t          j        ¦   «         D ]} |                      ¦   «          Œdt           d<   dd	dœS )
uW   Start the bot (enables scheduled jobs). Idempotent â€” safe to call if already running.r
   zBot is already running©ÚstatusÚmessageiô  zScheduler not initialised©Ústatus_codeÚdetailTÚstartedzBot is now running)Ú
_bot_stater   r
   r   Úget_jobsÚresume©Újobs    ú6/var/www/html/crypto-bot/backend/app/api/routes/bot.pyÚ	start_botr   
   s…   è è € õ )Ôð JØ#Ð0HÐIÐIÐIÝÔð QÝ¨Ð4OÐPÑPÔPÐPåÔ!Ñ#Ô#ð ð ˆØ
Š
‰ŒˆˆØ …JˆyÑØÐ,@ÐAÐAÐAó    z/stopc               ƒ   ó´   K  — t           d         st          dd¬¦  «        ‚t          j        ¦   «         D ]} |                      ¦   «          Œdt           d<   dddœS )	z=Pause the bot (suspend scheduled jobs without shutting down).r
   i  zBot is already stoppedr   FÚstoppedzBot has been pausedr   )r   r   r   r   Úpauser   s    r   Ústop_botr      sj   è è € õ iÔ ð NÝ¨Ð4LÐMÑMÔMÐMÝÔ!Ñ#Ô#ð ð ˆØ	Š	‰ŒˆˆØ!…JˆyÑØÐ,AÐBÐBÐBr   z/statusc               ƒ   ó  K  — g } t           j        rSt          j        ¦   «         D ]?}|                      |j        |j        r|j                             ¦   «         nddœ¦  «         Œ@t          d         t          d         t           j        | dœS )z,Return current bot state and scheduler info.N)ÚidÚnext_runr
   r   )r
   r   Úscheduler_runningÚjobs)r   r
   r   Úappendr!   Únext_run_timeÚ	isoformatr   )r$   r   s     r   Ú
bot_statusr(   #   s¤   è è € ð €DÝÔð ÝÔ%Ñ'Ô'ð 	ð 	ˆCØKŠKØ”fØ=@Ô=NÐX˜CÔ-×7Ò7Ñ9Ô9Ð9ÐTXðð ñ ô ð ð õ
 ˜iÔ(Ý˜6Ô"Ý&Ô.Øð	ð ð r   N)Úfastapir   r   Úapp.core.schedulerr   Úrouterr   Úpostr   r   Úgetr(   © r   r   ú<module>r/      sÜ   ðØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø (Ð (Ð (Ð (Ð (Ð (à	ˆ˜-¨u¨gÐ	6Ñ	6Ô	6€ð ¨Ð5Ð5€
ð ‡‚ˆXÑÔð
Bð 
Bñ Ôð
Bð ‡‚ˆWÑÔðCð Cñ ÔðCð ‡‚ˆIÑÔðð ñ Ôðð ð r   