
    iz                     f   d Z ddlmZmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
  G d ded	          Z G d
 ded	          Z G d ded	          Z G d ded	          Z G d ded	          Z G d ded	          Z G d ded	          Z G d ded	          Z G d ded	          ZdS )z2
HK Racing Analytics - Database Models (SQLModel)
    )SQLModelField)Optional)datedatetime)UUIDuuid4c                   :   e Zd ZU dZ edd          Zeed<    edd          Zeed<    ed	          Z	e
e         ed
<    ed	          Ze
e         ed<   e
e         ed<    ed	          Ze
e         ed<    ed	          Ze
e         ed<    ed	          Ze
e         ed<    ed	          Ze
e         ed<    ed	          Ze
e         ed<    ed	          Ze
e         ed<    eej                  Zeed<    eej                  Zeed<   dS )HorsezHorse master dataT   primary_key
max_lengthhorse_idd   r   index
horse_namer   horse_name_en2   country_of_originage
   sex   colorsiredamdam_sireownerdefault_factory
created_at
updated_atN)__name__
__module____qualname____doc__r   r   str__annotations__r   r   r   r   intr   r   r   r   r    r!   r   utcnowr$   r%        V/home/node/.openclaw/workspace-simple/hk-racing-analytics/backend/app/models/racing.pyr   r   
   s        Edr:::Hc:::es$777J777#(5C#8#8#8M8C=888',u';';';x};;;	#"---C#--- 5B///E8C=///%3///D(3-///#...C#...#es333Hhsm333 5C000E8C=000 5AAAJAAA 5AAAJAAAAAr/   r   T)tablec                      e Zd ZU dZ edd          Zeed<    edd          Zeed<    ed	          Z	e
e         ed
<    ed	          Ze
e         ed<    ed	          Ze
e         ed<    eej                  Zeed<   dS )JockeyzJockey master dataTr   r   	jockey_idr   r   jockey_namer   jockey_name_enlicense_typer   nationalityr"   r$   N)r&   r'   r(   r)   r   r4   r*   r+   r5   r6   r   r7   r8   r   r-   r$   r.   r/   r0   r3   r3      s         Ut;;;Is;;;u4888K888$)ES$9$9$9NHSM999"'%2"6"6"6L(3-666!&"!5!5!5K#555 5AAAJAAAAAr/   r3   c                       e Zd ZU dZ edd          Zeed<    edd          Zeed<    ed	          Z	e
e         ed
<    ed	          Ze
e         ed<    eej                  Zeed<   dS )TrainerzTrainer master dataTr   r   
trainer_idr   r   trainer_namer   trainer_name_enr   r8   r"   r$   N)r&   r'   r(   r)   r   r;   r*   r+   r<   r=   r   r8   r   r-   r$   r.   r/   r0   r:   r:   %   s         e<<<J<<<D999L#999%*Uc%:%:%:OXc]:::!&"!5!5!5K#555 5AAAJAAAAAr/   r:   c                   f   e Zd ZU dZ edd          Zeed<    ed          Ze	ed<   e
e         ed<    ed	d
          Zeed<   eed<    ed          Ze
e         ed<    ed	          Ze
e         ed<    ed          Ze
e         ed<   e
e         ed<    ed	          Ze
e         ed<    ed	          Ze
e         ed<    ed	          Ze
e         ed<    ed          Ze
e         ed<   e
e         ed<    ed	          Ze
e         ed<    eej                  Zeed<   dS )Racez	Race dataTr   r   race_id)r   	race_date	race_timer   r   venuerace_number   r   	race_name
race_classr   	race_typedistancetrackcoursetrack_conditiongoingprize_money_hkdweatherr"   r$   N)r&   r'   r(   r)   r   r@   r*   r+   rA   r   r   rC   r,   rF   rG   rH   rJ   rK   rL   rM   floatrO   r   r-   r$   r.   r/   r0   r?   r?   .   s        O5Tb999GS999e$'''It'''}"D111E3111$u444Ix}444 % 4 4 4J444$u333Ix}333sm 5B///E8C=///!ER000FHSM000%*Ub%9%9%9OXc]999 5B///E8C=///e_$$$"Ub111GXc]111 5AAAJAAAAAr/   r?   c                      e Zd ZU dZ ed d          Zeed<    edd          Zeed<    ed	d          Z	eed
<    ed          Z
ee         ed<    ed          Zee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<    ed          Zee         ed<    ed          Zee         ed<   ee         ed<    eej                  Zeed<   dS )RunnerzRunner (horse in race) datac                  8    t          t                                S Nr*   r	   r.   r/   r0   <lambda>zRunner.<lambda>D       3uww<< r/   Tr#   r   	runner_idrace.race_id)foreign_keyr   r@   zhorse.horse_idr   zjockey.jockey_idr[   r4   ztrainer.trainer_idr;   barrierhorse_numberweight_carriedhandicap_ratingdeclared_weightr   r   gearr   last_6_runsdays_since_last_runr"   r$   N)r&   r'   r(   r)   r   rY   r*   r+   r@   r   r4   r   r;   r,   rP   rb   rc   r   r-   r$   r.   r/   r0   rR   rR   B   s        %%U+?+?TRRRIsRRR5^4@@@GS@@@E&6dCCCHcCCC$u1CDDDIx}DDD %2F G G GJGGGc]3-UO###c]"""e_$$$%3///D(3-///!&"!5!5!5K#555!#&&& 5AAAJAAAAAr/   rR   c                   Z   e Zd ZU dZ ed d          Zeed<    ed          Zeed<    ed	          Z	eed
<   e
e         ed<   e
e         ed<   e
e         ed<   e
e         ed<   e
e         ed<   e
e         ed<   e
e         ed<   e
e         ed<    eej                  Zeed<   dS )ResultzRace result datac                  8    t          t                                S rT   rU   r.   r/   r0   rV   zResult.<lambda>V   rW   r/   TrX   	result_idrunner.runner_idr\   rY   rZ   r@   finishing_positionfinish_timemarginlengths_behindsectional_timerunning_position_600mrunning_position_400mrunning_position_200mr"   r$   N)r&   r'   r(   r)   r   rh   r*   r+   rY   r@   r   r,   rP   r   r-   r$   r.   r/   r0   rf   rf   T   s        U+?+?TRRRIsRRRU'9:::Is:::5^444GS444 %%%%   UOUO###UO####C=(((#C=(((#C=((( 5AAAJAAAAAr/   rf   c                       e Zd ZU dZ ed d          Zeed<    ed          Zeed<    ed	          Z	eed
<   e
ed<   ee         ed<   ee         ed<    ee
j                  Ze
ed<   dS )OddsHistoryzOdds historyc                  8    t          t                                S rT   rU   r.   r/   r0   rV   zOddsHistory.<lambda>f   s    UWW r/   TrX   odds_idri   r\   rY   rZ   r@   	timestampwin_odds
place_oddsr"   r$   N)r&   r'   r(   r)   r   ru   r*   r+   rY   r@   r   r   rP   r-   r$   r.   r/   r0   rs   rs   d   s         5)=)=4PPPGSPPPU'9:::Is:::5^444GS444uo 5AAAJAAAAAr/   rs   c                      e Zd ZU dZ ed d          Zeed<    edd          Zeed<    ed	
          Z	eed<    ee
j                  Ze
ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<   ee         ed <   ee         ed!<   ee         ed"<   ee         ed#<   ee         ed$<   ee         ed%<   ee         ed&<   ee         ed'<   ee         ed(<   d)S )*FeatureszEngineered features for MLc                  8    t          t                                S rT   rU   r.   r/   r0   rV   zFeatures.<lambda>q   s    CLL r/   TrX   
feature_idri   )r[   uniquerY   rZ   r\   r@   r"   feature_dateavg_finish_pos_last_6win_rate_last_6place_rate_last_6rd   runs_in_last_30_daysclass_ratingclass_diff_from_lastdistance_startsdistance_win_ratedistance_place_ratedistance_avg_margintrack_startstrack_win_ratetrack_place_ratejockey_win_rate_30_daysjockey_place_rate_30_daysjockey_horse_win_ratetrainer_win_rate_30_daystrainer_place_rate_30_daystrainer_horse_win_rateweight_diff_from_lastweight_above_minbarrier_win_ratebarrier_place_rateopening_oddsodds_movement_pctmarket_supportN)r&   r'   r(   r)   r   r|   r*   r+   rY   r@   r   r-   r~   r   rP   r,   boolr.   r/   r0   rz   rz   o   sY        $$e,@,@dSSSJSSSU'9$GGGIsGGG5^444GS444"U8?CCCL(CCC $E?***e_$$$&&&!#&&&"3-''' 3-"3-''' c]"""&&&!%(((!%((( 3-UO###uo%%% &e_,,,'...#E?*** 'uo--- (///$UO+++ $E?***uo%%% uo%%% ''' 5/!!!&&&TN"""""r/   rz   c                   d   e Zd ZU dZ ed d          Zeed<    ed          Zeed<    ed	          Z	eed
<    ed          Z
eed<    eej                  Zeed<   eed<   eed<   ee         ed<   ee         ed<   ee         ed<   ee         ed<    eej                  Zeed<   dS )
PredictionzModel predictionsc                  8    t          t                                S rT   rU   r.   r/   r0   rV   zPrediction.<lambda>   s    s577|| r/   TrX   prediction_idri   r\   rY   rZ   r@   r   r   model_versionr"   prediction_timestampwin_probabilityplace_probabilitywin_rank
place_rankconfidence_scoretop_featuresr$   N)r&   r'   r(   r)   r   r   r*   r+   rY   r@   r   r   r-   r   rP   r   r,   r$   r.   r/   r0   r   r      s3        /C/CQUVVVM3VVVU'9:::Is:::5^444GS444"---M3---%*U8?%K%K%K(KKK  sm uo%%% 3- 5AAAJAAAAAr/   r   N)r)   sqlmodelr   r   typingr   r   r   uuidr   r	   r   r3   r:   r?   rR   rf   rs   rz   r   r.   r/   r0   <module>r      sy    % $ $ $ $ $ $ $       # # # # # # # #        B B B B BHD B B B B"B B B B BXT B B B BB B B B Bhd B B B BB B B B B84 B B B B(B B B B BXT B B B B$B B B B BXT B B B B B B B B B($ B B B B2# 2# 2# 2# 2#xt 2# 2# 2# 2#jB B B B B B B B B B Br/   