o
    !\i                     @   s   d Z 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 ddlmZ ddlmZ dd	lmZ e ZG d
d deZededddedddedddeddddeefdee dee	 dee	 dedef
ddZdS )zMatch API endpoints    )	APIRouterDependsQuery)Session)Optional)datetime)get_db)MatchRepository)LeagueRepository)	BaseModelc                   @   sl   e Zd ZU eed< eed< eed< eed< eed< eed< eed< ee ed< ee ed	< G d
d dZdS )MatchResponseid	league_idleague_namehome_team_nameaway_team_name
match_datestatus
home_score
away_scorec                   @   s   e Zd ZdZdS )zMatchResponse.ConfigTN)__name__
__module____qualname__from_attributes r   r   N/var/www/www-root/data/www/176.119.141.140/sports-predictor/app/api/matches.pyConfig   s    r   N)	r   r   r   int__annotations__strr   r   r   r   r   r   r   r      s   
 r   z/matches/upcomingNz	League ID)descriptionz	From datezTo dated      i  )geleleague	from_dateto_datelimitdbc                    s   d }| r|   rzt| }W n ttfy   d }Y nw t|}t|}|j||||d}g }	|D ]'}
||
j}|		t
|
j|
j|rF|jnd|
jj|
jj|
j|
j|
j|
jd	 q2|	S )N)r   r&   r'   r(   Unknown)	r   r   r   r   r   r   r   r   r   )stripr   
ValueError	TypeErrorr	   r
   get_upcoming	get_by_idr   appendr   r   name	home_team	away_teamr   r   r   r   )r%   r&   r'   r(   r)   r   
match_repoleague_repomatchesresultmatch
league_objr   r   r   get_upcoming_matches   s>   
r:   )__doc__fastapir   r   r   sqlalchemy.ormr   typingr   r   app.core.db.databaser   )app.core.db.repositories.match_repositoryr	   *app.core.db.repositories.league_repositoryr
   pydanticr   routerr   getr   r   r:   r   r   r   r   <module>   s8    


