o
    {Hi/                     @  s2   d dl mZ d dlZd dlmZ G dd dZdS )    )annotationsN)settingsc                   @  s   e Zd Zdd Zdd Zd,ddZd,d	d
Zd,ddZd-ddZd.d/ddZ	d0d1ddZ
d2ddZd3ddZd4d"d#Zd5d)d*Zd+S )6DatabaseManagerc                 C  s
   d | _ d S N)poolself r	   :/var/www/www-root/data/www/77.83.87.30/database/manager.py__init__   s   
zDatabaseManager.__init__c                   s"   | j sttjI d H | _ | j S r   )r   asyncpgcreate_poolr   DATABASE_URLr   r	   r	   r
   	_get_pool
   s   zDatabaseManager._get_poolquerystrc              	     h   |   I d H }| 4 I d H }|j|g|R  I d H W  d   I d H  S 1 I d H s-w   Y  d S r   )r   acquireexecuter   r   argsr   connr	   r	   r
   r      
   0zDatabaseManager.executec              	     r   r   )r   r   fetchr   r	   r	   r
   	fetch_all   r   zDatabaseManager.fetch_allc              	     r   r   )r   r   fetchrowr   r	   r	   r
   	fetch_one   r   zDatabaseManager.fetch_onemdictc                   sr   d}|  ||d |dd|d|d|d|d|d	|d
|d|d|dI d H  d S )Na  
        INSERT INTO matches (
            id, source, competition_url, match_url,
            kickoff_ts, status, home_team, away_team,
            home_score, away_score, minute
        )
        VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)
        ON CONFLICT (id) DO UPDATE SET
            status=EXCLUDED.status,
            home_score=EXCLUDED.home_score,
            away_score=EXCLUDED.away_score,
            minute=EXCLUDED.minute
        idsource
flashscorecompetition_url	match_url
kickoff_tsstatus	home_team	away_team
home_score
away_scoreminute)r   get)r   r   r   r	   r	   r
   upsert_match$   s    
zDatabaseManager.upsert_matchd   r%   limitintc                   s   |  d||I d H }|S )Nz
            SELECT * FROM matches
            WHERE status=$1
            ORDER BY kickoff_ts DESC
            LIMIT $2
            r   )r   r%   r.   rowsr	   r	   r
   list_matchesA   s   

zDatabaseManager.list_matches   teamc                      |  d||I d H S )Nz
            SELECT *
            FROM matches
            WHERE status='finished'
              AND (home_team=$1 OR away_team=$1)
            ORDER BY kickoff_ts DESC
            LIMIT $2
            r0   )r   r4   r.   r	   r	   r
   last_matches_for_teamN   s   
z%DatabaseManager.last_matches_for_teamc                   s   |  d|I d H S )Nz)SELECT * FROM team_stats WHERE team_id=$1r   )r   r4   r	   r	   r
   get_team_stats_   s
   
zDatabaseManager.get_team_statspc                   sJ   d}|  ||d |d |d |d |d |d |d |d	 	I d H  d S )
Na  
        INSERT INTO predictions (
            match_id, model,
            p_home, p_draw, p_away,
            eg_home, eg_away,
            confidence, created_at
        )
        VALUES ($1,$2,$3,$4,$5,$6,$7,$8,now())
        ON CONFLICT (match_id, model) DO UPDATE SET
            p_home=EXCLUDED.p_home,
            p_draw=EXCLUDED.p_draw,
            p_away=EXCLUDED.p_away,
            eg_home=EXCLUDED.eg_home,
            eg_away=EXCLUDED.eg_away,
            confidence=EXCLUDED.confidence,
            created_at=now()
        match_idmodelp_homep_drawp_awayeg_homeeg_away
confidencer   )r   r9   r   r	   r	   r
   upsert_predictionh   s   z!DatabaseManager.upsert_predictionr:   r;   c                   r5   )Nz^
            SELECT * FROM predictions
            WHERE match_id=$1 AND model=$2
            r7   )r   r:   r;   r	   r	   r
   get_prediction_for_match   s   
z(DatabaseManager.get_prediction_for_matchnaccfloatbrierloglossc                   s    |  d|||||I d H  d S )Nz
            INSERT INTO metric_aggregates(model, n_matches, accuracy, brier, logloss, created_at)
            VALUES ($1,$2,$3,$4,$5,now())
            rB   )r   r;   rE   rF   rH   rI   r	   r	   r
   save_metrics   s   zDatabaseManager.save_metricsN)r   r   )r   r   )r-   )r%   r   r.   r/   )r3   )r4   r   r.   r/   )r4   r   )r9   r   )r:   r   r;   r   )
r;   r   rE   r/   rF   rG   rH   rG   rI   rG   )__name__
__module____qualname__r   r   r   r   r   r,   r2   r6   r8   rC   rD   rJ   r	   r	   r	   r
   r      s    





	
r   )
__future__r   r   configr   r   r	   r	   r	   r
   <module>   s    