
    HiE                        d Z ddlmZmZmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZmZ  e            Z G d	 d
e          Z G d de          Z G d de          Ze                    de	e                   dd ee          fde
e         de
e         defd            Ze                    de           ee          fdedefd            Ze                    d           ee          fdefd            ZdS )z
API Router for Race endpoints
    )	APIRouterDependsHTTPException)Sessionselect)ListOptional)date)	BaseModel)get_session)RaceRunnerc                   ~    e Zd ZU dZeed<   eed<   eed<   eed<   ee         ed<   ee         ed<   ee         ed<   d	S )
RaceResponsezRace response schemarace_id	race_datevenuerace_number	race_namedistancetrackN)	__name__
__module____qualname____doc__str__annotations__r
   intr	        R/home/node/.openclaw/workspace-simple/hk-racing-analytics/backend/app/api/races.pyr   r      so         LLLOOOJJJ}smC=r    r   c                       e Zd ZU dZeed<   ee         ed<   eed<   dZeed<   dZ	eed<   ee         ed<   ee
         ed	<   d
S )RunnerResponsezRunner response schema	runner_idhorse_number
horse_name jockey_nametrainer_namebarrierweight_carriedN)r   r   r   r   r   r   r	   r   r(   r)   floatr   r    r!   r#   r#      sz           NNN3-OOOKL#c]UO#####r    r#   c                       e Zd ZU dZeed<   eed<   eed<   eed<   ee         ed<   ee         ed<   ee         ed<   g Z	e
e         ed	<   d
S )RaceWithRunnerszRace with runnersr   r   r   r   r   r   r   runnersN)r   r   r   r   r   r   r
   r   r	   r/   r   r#   r   r    r!   r.   r.   &   s         LLLOOOJJJ}smC=$&GT.!&&&&&r    r.   /)response_modelNr   r   sessionc                   K   t          t                    }| r#|                    t          j        | k              }|r#|                    t          j        |k              }|                    t          j                                        t          j                  }|                    |          	                                }|S )z List races with optional filters)
r   r   wherer   r   order_bydescr   execall)r   r   r2   queryracess        r!   
list_racesr;   2   s       4LLE 9DNi788 1DJ%/00NN4>..00$2BCCELL##%%ELr    z
/{race_id}r   c                   K   |                     t          |           }|st          dd          t          t                                        t          j        | k              }|                    |                                          }t          |j        |j
        |j        |j        |j        |j        |j        d |D                       S )zGet race by ID with runnersi  zRace not found)status_codedetailc                 |    g | ]9}t          t          |j                  |j        d d d |j        |j                  :S )r'   )r$   r%   r&   r(   r)   r*   r+   )r#   r   r$   r%   r*   r+   ).0rs     r!   
<listcomp>zget_race.<locals>.<listcomp>_   s_     
 
 
  ak**^	 /  
 
 
r    )r   r   r   r   r   r   r   r/   )getr   r   r   r   r4   r   r7   r8   r.   r   r   r   r   r   r   )r   r2   racerunners_queryr/   s        r!   get_racerF   G   s       ;;tW%%D F4DEEEE 6NN((7)BCCMll=))--//G .j$.j
 
 
 
 
   r    z/upcoming/todayc                 H  K   t          j                    }t          t                                        t          j        |k              }|                    t          j                  }|                     |          	                                }|t          |          |dS )zGet today's races)r
   countr:   )r
   todayr   r   r4   r   r5   r   r7   r8   len)r2   rI   r9   r:   s       r!   get_todays_racesrK   n   s      
 JLLE4LLt~677ENN4+,,ELL##%%E U  r    )r   fastapir   r   r   sqlmodelr   r   typingr   r	   datetimer
   pydanticr   app.db.databaser   app.models.racingr   r   routerr   r#   r.   rC   r   r;   rF   rK   r   r    r!   <module>rT      sN    6 5 5 5 5 5 5 5 5 5 $ $ $ $ $ $ $ $ ! ! ! ! ! ! ! !             ' ' ' ' ' ' * * * * * * * *	    9   $ $ $ $ $Y $ $ $	' 	' 	' 	' 	'i 	' 	' 	' C\ 233 $w{++ ~C=    43( L99 w{++# ### # # :9#L w{++      r    