
    Mni                     N   d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ  G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )z+
SQLAlchemy models for HK Racing Analytics
    )
ColumnStringIntegerDECIMALDATETIME	TIMESTAMPBooleanText
ForeignKey)relationship)Basec                      e Zd ZdZ e ed          d          Z e ed          d          Z e ed                    Z e ed                    Z	 ee
          Z e ed	                    Z e ed
                    Z e ed                    Z e ed                    Z e ed                    Z e ed                    Z e ed                    Z eed          Z eed          ZdS )Horsehorses   Tprimary_keyd   Fnullable2   
      now()server_defaultN)__name__
__module____qualname____tablename__r   r   horse_id
horse_namehorse_name_encountry_of_originr   agesexcolorsiredamdam_sireownerimporterr	   
created_at
updated_at     O/home/node/.openclaw/workspace-simple/hk-racing-analytics/backend/app/models.pyr   r   	   sP       MvffRjjd333Hse444JF66#;;''Mvvbzz**
&//C
&

CF66"::E6&&++D
&

CvffSkk""HF66#;;EvffSkk""H	':::J	':::JJJr1   r   c                      e Zd ZdZ e ed          d          Z e ed          d          Z e ed                    Z e ed                    Z	 e ed                    Z
 eed	
          Z eed	
          ZdS )Jockeyjockeysr   Tr   r   Fr   r   r   r   N)r   r   r    r!   r   r   	jockey_idjockey_namejockey_name_enlicense_typenationalityr	   r.   r/   r0   r1   r2   r4   r4      s        Mvvbzzt444I&u555KVFF3KK((N6&&**%%L&$$K	':::J	':::JJJr1   r4   c                       e Zd ZdZ e ed          d          Z e ed          d          Z e ed                    Z e ed                    Z	 ee
d	
          Z ee
d	
          ZdS )Trainertrainersr   Tr   r   Fr   r   r   r   N)r   r   r    r!   r   r   
trainer_idtrainer_nametrainer_name_enr:   r	   r.   r/   r0   r1   r2   r<   r<   (   s        Mr

555J6&&++666LfVVC[[))O&$$K	':::J	':::JJJr1   r<   c                      e Zd ZdZ e ed          d          Z eed          Z ee	          Z
 e ed          d          Z eed          Z e ed                    Z e ed                    Z e ed	                    Z ee          Z e ed                    Z e ed                    Z e ed                    Z e ed	                    Z e ed
d                    Z e ed                    Z e edd                    Z ee          Z eed          ZdS )Raceracesr   Tr   Fr   r      r            r   r   N)r   r   r    r!   r   r   race_idr   	race_dater   	race_timevenuer   race_number	race_name
race_class	race_typedistancetrackcoursetrack_conditiongoingr   prize_money_hkdweathertemperature_chumidity_pctr	   r.   r0   r1   r2   rB   rB   3   s       MfVVBZZT222Gte,,,ItIF66"::...E&5111Kvvc{{##Ir

##Jvvbzz""IvgHF66"::EVFF2JJFfVVBZZ((OF66"::EfWWR^^,,OfVVBZZ  GF771a==))M6'??L	':::JJJr1   rB   c                      e Zd ZdZ e ed          dd          Z e ed           ed          d	          Z e ed
           ed          d	          Z	 e ed
           ed          d	          Z
 e ed
           ed          d	          Z ee          Z ee          Z e edd                    Z ee          Z e edd                    Z e ed                    Z e ed
                    Z ee          Z eed          Z edd          Z edd          Z edd          Z edd          ZdS )Runnerrunners$   Tuuid_generate_v4()r   r   r   races.race_idFr   r   zhorses.horse_idzjockeys.jockey_idztrainers.trainer_id   rF   r   r   r   rB   back_populatesr   r4   r<   N)r   r   r    r!   r   r   	runner_idr   rH   r"   r6   r>   r   barrierhorse_numberr   weight_carriedhandicap_ratingdeclared_weightgearlast_6_runsdays_since_last_runr	   r.   r   racehorsejockeytrainerr0   r1   r2   rZ   rZ   J   s       MvvbzztDXYYYIfVVBZZO!<!<uMMMGvffRjj**->"?"?%PPPHvvbzz::.A#B#BUSSSIr

JJ/D$E$EPUVVVJfWooG6'??LVGGAqMM**NfWooOfWWQ]]++O6&&++D&$$K &//	':::J<y999DL;;;E\(9===Fl9Y???GGGr1   rZ   c                      e Zd ZdZ e ed          dd          Z e ed           ed          d          Z e ed	           ed
          d          Z	 ee
          Z e edd                    Z e edd                    Z e edd                    Z e edd                    Z ee
          Z ee
          Z ee
          Z eed          Z edd          ZdS )Resultresultsr\   Tr]   r^   runners.runner_idFr   r   r_         r`   rF   r   r   rZ   ra   N)r   r   r    r!   r   r   	result_idr   rc   rH   r   finishing_positionr   finish_timemarginlengths_behindsectional_timerunning_position_600mrunning_position_400mrunning_position_200mr	   r.   r   runnerr0   r1   r2   rq   rq   b   sG       MvvbzztDXYYYIvvbzz::.A#B#BUSSSIfVVBZZO!<!<uMMMG&A''KVGGAqMM""FVGGAqMM**NVGGAqMM**N"F7OO"F7OO"F7OO	':::J\(9===FFFr1   rq   c                   b   e Zd ZdZ e ed          dd          Z e ed           ed          d          Z e ed	           ed
          d          Z	 ee
d          Z e edd                    Z e edd                    Z ee
d          Z edd          ZdS )OddsHistoryodds_historyr\   Tr]   r^   rs   Fr   r   r_   rt   rF   r   r   rZ   ra   N)r   r   r    r!   r   r   odds_idr   rc   rH   r	   	timestampr   win_odds
place_oddsr.   r   r   r0   r1   r2   r   r   u   s        "MfVVBZZTBVWWWGvvbzz::.A#B#BUSSSIfVVBZZO!<!<uMMMGy5111Ivggamm$$H1&&J	':::J\(>BBBFFFr1   r   c                      e Zd ZdZ e ed          dd          Z e ed           ed          d          Z e ed	           ed
          d          Z	 ee
d          Z e edd                    Z e edd                    Z e edd                    Z ee          Z ee          Z ee          Z ee          Z ee          Z e edd                    Z e edd                    Z e edd                    Z ee          Z e edd                    Z e edd                    Z e edd                    Z e edd                    Z e edd                    Z e edd                    Z e edd                    Z  e edd                    Z! e edd                    Z" e edd                    Z# e edd                    Z$ e edd                    Z% e edd                    Z& e edd                    Z' ee(          Z) ee
d          Z* e+dd          Z,dS )Featurefeaturesr\   Tr]   r^   rs   Fr   r   r_   r   r      rF   rG   r`   ru   rt   rZ   ra   N)-r   r   r    r!   r   r   
feature_idr   rc   rH   r	   feature_dater   avg_finish_pos_last_6win_rate_last_6place_rate_last_6r   rk   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_pctr
   market_supportr.   r   r   r0   r1   r2   r   r      s4       Mr

EYZZZJvvbzz::.A#B#BUSSSIfVVBZZO!<!<uMMMG6)G<<<L #F771a==11fWWQ]]++Owwq!}}-- &//!6'?? 6'??L!6'?? fWooOwwq!}}-- &A// &A// 6'??LVGGAqMM**Nvggamm,, %fWWQ]]33 &wwq!}} 5 5"F771a==11  &vggamm44!'1!6!6#VGGAqMM22 #F771a==11vggamm,, vggamm,,1.. 6''!Q--((Lwwq!}}--VG__N	':::J\(:>>>FFFr1   r   c                       e Zd ZdZ e ed          dd          Z e ed           ed          d          Z e ed	           ed
          d          Z	 e ed                    Z
 eed          Z e edd                    Z e edd                    Z e edd                    Z ee          Z ee          Z e edd                    Z ee          Z eed          Z edd          ZdS )
Predictionpredictionsr\   Tr]   r^   rs   Fr   r   r_   r   r   r   rG   r   rZ   ra   N)r   r   r    r!   r   r   prediction_idr   rc   rH   model_versionr	   prediction_timestampr   win_probabilityplace_probabilityshow_probabilityr   win_rank
place_rankconfidence_scorer   top_featuresr.   r   r   r0   r1   r2   r   r      se       !MF66"::4H\]]]Mvvbzz::.A#B#BUSSSIfVVBZZO!<!<uMMMGF66"::&&M!6)GDDDfWWQ]]++Owwq!}}--vggamm,,vgHJvggamm,,6$<<L	':::J\(=AAAFFFr1   r   N)__doc__
sqlalchemyr   r   r   r   r   r   r	   r
   r   r   sqlalchemy.ormr   app.databaser   r   r4   r<   rB   rZ   rq   r   r   r   r0   r1   r2   <module>r      s    j i i i i i i i i i i i i i i i i i i i i i i i ' ' ' ' ' '      ; ; ; ; ;D ; ; ;&	; 	; 	; 	; 	;T 	; 	; 	;; ; ; ; ;d ; ; ;; ; ; ; ;4 ; ; ;.@ @ @ @ @T @ @ @0> > > > >T > > >&C C C C C$ C C C7? 7? 7? 7? 7?d 7? 7? 7?tB B B B B B B B B Br1   