o
    Re~a                     @   s>   d dl Z d dlZd dlZd dlmZ dZdZG dd dZdS )    N)	sqlescape58000c                   @   sV   e Zd Zdd ZdddZdddZdd	d
Zdd ZdddZdd Z	dddZ
dS )Cachec           
         sl  t d d  dt d}|| | }|g kr)t d t d t || d  dt d}|| | }|D ]v}|d }t d   t|}t|}z fd	d
|D }W n t	yz }	 zt d   W Y d }	~	 d S d }	~	ww t
|dkrt d t
|dks|sg   S |dkrg   S |sg   S |d ur|d d ur|d   S g   S q=d S )NzDReceived API Airport call , trying to check if exist in the cache.../SELECT * FROM `cache_airport` WHERE iata_code='.'  AND last_update > DATE_SUB(NOW(), INTERVAL 	 MINUTE) Cache miss...Calling to refresh the Cache   ,Fetched from cache, now lets get the data...c                    $   g | ]}d |v r|d   kr|qS 	iata_code .0
dictionaryr   r   ,/var/www/html/alertair/monitor/libs/cache.py
<listcomp>)   
    z(Cache.AirportApiCall.<locals>.<listcomp>Can't get Live data...   Cache hit...!!!!!r   None)printAIRPORT_CACHE_REFRESHexecutefetchallr   UpdateAirportCachejsondumpsloads	Exceptionlen)
r   mycursormydbsql	myresult1request1json_stringa_listfiltered_lister   r   r   AirportApiCall   sN   





zCache.AirportApiCall c                 C   sx  d}t d t d|  d  d|  d}|| | }|g krtt d t ||   t||  }| }|d d	 d
 d|d d	 v rP|d d	 d t|d dd}d|  d| d}	||	 |	  t d|   d|  dt
 d}|| | }
|
D ]1}t d|   t||  }| }t|d dd}d| d|  d}	||	 |	  qd S )Nz[https://airlabs.co/api/v9/airports?&api_key=f250f4ba-57ad-462c-b988-e669aa89d652&iata_code=z.ACACHE Check if needed to refresh the cache...zChecking Cache for iata: ...r   '  Cache Empty...responser   namesalternatenames'z\'zuINSERT INTO  cache_airport (iata_code, json_string)                                                         VALUES ('', '');Cache added for....'  AND last_update < DATE_SUB(NOW(), INTERVAL r   Updating Cache...z8UPDATE cache_airport SET last_update=NOW(),json_string='z' WHERE iata_code=')r   r   r   requestsgetr    popr!   replacecommitr   )r   r%   r&   airport_urlr'   r(   r3   response_jsondump	insertsql	myresult2request2r   r   r   r   F   sF   




zCache.UpdateAirportCachec                 C   sL  d}d}t d | dkr|dkrd}|| | }|D ]}|d } t d|  d  d	|  d
}|| | }	|	g krt d t ||   t||  }
|
 }|d sot d|   t ||   t||  }
|
 }d|  dt|d  d}|| |  t d|   qd	|  dt d}|| | }|D ]M}t d|   t ||   t||  }
|
 }|d st d|   t ||   t||  }
|
 }dt|d  d|  d}|| |  qqd S t d t d|  d  d	|  d
}|| | }	|	g krct d t ||   t||  }
|
 }|d sEt d|   t ||   t||  }
|
 }d|  dt|d  d}|| |  t d|   d	|  dt d}|| | }|D ],}t d|   t||  }
|
 }dt|d  d|  d}|| |  qwd S )Nz\https://airlabs.co/api/v9/flights?api_key=f250f4ba-57ad-462c-b988-e669aa89d652&airline_iata=zZhttps://airlabs.co/api/v9/flights?api_key=f250f4ba-57ad-462c-b988-e669aa89d652&reg_number=z.LCACHE Check if needed to refresh the cache...r/   z_SELECT airline_iata, count(airline_iata) FROM `alerts_users_flights` WHERE islive=1 GROUP BY 1 r   Checking Cache for airline: r0   /SELECT * FROM `cache_live` WHERE airline_iata='r1   r2   r3   z3Lets try maybe by registration we will have luck...zyINSERT INTO  cache_live (airline_iata, json_string)                                                             VALUES ('r7   r8   r9   r:   r   r;   z5UPDATE cache_live SET last_update=NOW(),json_string='' WHERE airline_iata='r6   DDoesn't find in cache and call was created, so I'm caching it now...zuINSERT INTO  cache_live (airline_iata, json_string)                                                         VALUES ('	r   r   r   r<   r=   r    r!   r@   CACHE_REFRESH)airline_iataflight_numberr%   r&   live_api_urllive_api_url_regr'   myresultrequestr(   r3   rB   rD   rE   rF   r   r   r   UpdateLiveCachey   s   





6





zCache.UpdateLiveCacher   c                    s  t d d  dt d}|| | }|g kr*t d t d t || d  dt d}|| | }|D ]}|d }t d    t|}	t|}	z|se fd	d
|	D }
n	fdd
|	D }
W n t	y } zt d    W Y d }~ d S d }~ww t
|
dkrt d t
|
dks|
sg   S |
dkrg   S |
sg   S |
d ur|
d d ur|
d   S g   S q>d S )Nz?Received an API call , trying to check if exist in the cache...rH   r   r   r	   r
   r   r   c                    (   g | ]}d |v r|d    kr|qS flight_iatar   r   rM   rN   r   r   r      
    z%Cache.LiveApiCall.<locals>.<listcomp>c                    r   )
reg_numberr   r   )rN   r   r   r     r   r   r   r   r   r   )r   rL   r   r   r   rS   r    r!   r"   r#   r$   )rM   rN   byregr%   r&   r'   r(   r)   r*   r+   r,   r-   r   rW   r   LiveApiCall   sX   




zCache.LiveApiCallc           
   	      X  t d d  dt d}|| | }|g kr*t d t d t || d  dt d}|| | }|D ]k}|d }t d    t|}t|}z fd	d
|D }	W n t	yp   t d Y q>w t
|	dkr{t d t
|	dks|	sg   S |	dkrg   S |	sg   S |	d ur|	d d ur|	d   S g   S q>d S )NFSCACHE Received an API call , trying to check if exist in the cache...3SELECT * FROM `cache_schedule` WHERE airline_iata='r   r   r	   r
   r   r   c                    rT   rU   r   r   rW   r   r   r   @  rX   z+Cache.LiveScheduledCall.<locals>.<listcomp>Can't get sdata...r   r   r   r   )r   rL   r   r   r   UpdateScheduledCacher    r!   r"   r#   r$   
rM   rN   r%   r&   r'   r(   r)   r*   r+   r,   r   rW   r   LiveScheduledCall(  L   




zCache.LiveScheduledCallc                 C     d}t d | dkr|dkrd}|| | }|D ]}|d } t d|  d  d|  d	}|| | }|g krpt d
 t ||   t||  }	|	 }
d|  dt|
d  d}|| |  t d|   qd|  dt d}|| | }|D ]1}t d|   t ||   t||  }	|	 }
dt|
d  d|  d}|| |  qqd S t d t d|  d  d|  d	}|| | }|g krt d
 t ||   t||  }	|	 }
d|  dt|
d  d}|| |  t d|   d|  dt d}|| | }|D ],}t d|   t||  }	|	 }
dt|
d  d|  d}|| |  q d S )Nz^https://airlabs.co/api/v9/schedules?api_key=f250f4ba-57ad-462c-b988-e669aa89d652&airline_iata=z.SCACHE Check if needed to refresh the cache...r/   PSELECT airline_iata, count(airline_iata) FROM `alerts_users_flights` GROUP BY 1 r   rG   r0   r^   r1   r2   z}INSERT INTO  cache_schedule (airline_iata, json_string)                                                             VALUES ('r7   r3   r8   r9   r:   r   r;   z9UPDATE cache_schedule SET last_update=NOW(),json_string='rI   r6   rJ   zyINSERT INTO  cache_schedule (airline_iata, json_string)                                                         VALUES ('rK   )rM   rN   r%   r&   schedules_urlr'   rQ   rR   r(   r3   rB   rD   rE   rF   r   r   r   r`   [  s   





!




zCache.UpdateScheduledCachec           
   	      r\   )Nr]   1SELECT * FROM `cache_routes` WHERE airline_iata='r   r   r	   r
   r   r   c                    rT   rU   r   r   rW   r   r   r     rX   z$Cache.RoutesCall.<locals>.<listcomp>r_   r   r   r   r   )r   rL   r   r   r   UpdateRoutesCacher    r!   r"   r#   r$   ra   r   rW   r   
RoutesCall  rc   zCache.RoutesCallc                 C   rd   )Nz[https://airlabs.co/api/v9/routes?api_key=f250f4ba-57ad-462c-b988-e669aa89d652&airline_iata=z-RACHE Check if needed to refresh the cache...r/   re   r   rG   r0   rg   r1   r2   zINSERT INTO  cache_routes (airline_iata, json_string)                                                                 VALUES ('r7   r3   r8   r9   r:   r   r;   z7UPDATE cache_routes SET last_update=NOW(),json_string='rI   r6   rJ   z{INSERT INTO  cache_routes (airline_iata, json_string)                                                             VALUES ('rK   )rM   rN   r%   r&   
routes_urlr'   rQ   rR   r(   r3   rB   rD   rE   rF   r   r   r   rh     s   





!




zCache.UpdateRoutesCacheN)r/   r/   r/   )r/   r/   r/   r/   )r   r/   r/   )__name__
__module____qualname__r.   r   rS   r[   rb   r`   ri   rh   r   r   r   r   r      s    
:
3
kD
3M4r   )r<   r    re	sqlescapyr   rL   r   r   r   r   r   r   <module>   s    