o
     hn                     @   s`   d dl mZ d dlZd dlZd dlZd dlZg dZdd Zdd Zdd	 Z	d
d Z
dd ZdS )    )ConfigN)Zsparczre-joinzprecision-human-painc           
         s<  d}d}d}t jdd4 I d H }	 tj d|  d| d	| }zD|j|d
dtj idI d H }|  | }|dg }|sDW nB|tdd |D 7 }t	|  d|  t
||k r`W n&|d7 }W n ty }	 zt	d|  d| d|	  W Y d }	~	nd }	~	ww qW d   I d H  |S 1 I d H sw   Y  |S )Nr         g      N@)timeoutTz/api/v3/workspaces/z/protocols?page_id=z&page_size=AuthorizationzBearer )headersitemsc                 s   s$    | ]}| d i  ddV  qdS )statsZnumber_of_viewsr   N)get).0p r   J/home/cmiss/Jenkins/workspace/SPARC-API/scripts/update_protocol_metrics.py	<genexpr>   s   " z,fetch_views_for_workspace.<locals>.<genexpr>z cummulative views = z[ERROR] Workspace z, Page z: )httpxZAsyncClientr   PROTOCOLS_IO_HOSTr
   PROTOCOLS_IO_TOKENraise_for_statusjsonsumprintlen	Exception)
Zworkspace_idZviewspageZ	page_sizeclienturlresdatar   er   r   r   fetch_views_for_workspace
   s:    r   c                     s:   dd t D } tj|  I d H }td|  t|}|S )Nc                 S   s   g | ]}t |qS r   )r   )r   Zwidr   r   r   
<listcomp>$   s    z'compute_total_views.<locals>.<listcomp>z Workspace total views results = )workspace_idsasynciogatherr   r   )tasksresultstotalr   r   r   compute_total_views#   s   r'   c                  C   s   ddl m}  td tt }td|  tj}|r(|dr(|	ddd}| |}d|i}td	|  |
tjt|d
 td|tj  d S )Nr   )ProtocolMetricsTablez*Starting job to update protocol metrics...zTotal protocol views = zpostgres://zpostgresql://r   total_protocol_viewsz!Updating DB protocol metrics to: Tz/Finished updating DB. Protocol metrics set to: )app.dbtabler(   r   r"   runr'   r   DATABASE_URL
startswithreplaceupdateStatePROTOCOL_METRICS_TABLENAMEr   dumps	pullState)r(   total_viewsdb_urltableZtotal_views_datar   r   r   execute_protocol_metrics_update*   s   r6   c                  C   s   t jtd} |   d S )N)target)	threadingThreadr6   start)threadr   r   r   update_protocol_metrics?   s   r<   c              
   C   s   t d | d u rt d d S z| tj}|d u r t d W d S t d|  t|W S  tyF } zt d|  W Y d }~d S d }~ww )Nz#Retreiving protocol metrics from DBzProtocol metrics table was Nonez(Protocol metrics pullState returned Nonez2Retreived the following protocol metrics from DB: z#Error retreiving protocol metrics: )r   r2   r   r0   r   loadsr   )r5   current_stater   r   r   r    get_protocol_metrics_table_stateC   s    r?   )
app.configr   r"   r   r   r8   r!   r   r'   r6   r<   r?   r   r   r   r   <module>   s    