hockey-blast-common-lib 0.1.1__py3-none-any.whl → 0.1.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hockey_blast_common_lib/__init__.py +0 -0
- hockey_blast_common_lib/db_connection.py +40 -0
- hockey_blast_common_lib/db_utils.py +25 -0
- hockey_blast_common_lib/models.py +880 -0
- {hockey_blast_common_lib-0.1.1.dist-info → hockey_blast_common_lib-0.1.3.dist-info}/METADATA +1 -1
- hockey_blast_common_lib-0.1.3.dist-info/RECORD +8 -0
- hockey_blast_common_lib-0.1.3.dist-info/top_level.txt +1 -0
- hockey_blast_common_lib-0.1.1.dist-info/RECORD +0 -4
- hockey_blast_common_lib-0.1.1.dist-info/top_level.txt +0 -1
- {hockey_blast_common_lib-0.1.1.dist-info → hockey_blast_common_lib-0.1.3.dist-info}/WHEEL +0 -0
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# import psycopg2
|
2
|
+
from sqlalchemy import create_engine
|
3
|
+
from sqlalchemy.orm import sessionmaker
|
4
|
+
|
5
|
+
# Database connection parameters per organization
|
6
|
+
DB_PARAMS = {
|
7
|
+
"sharksice": {
|
8
|
+
"dbname": "hockey_blast",
|
9
|
+
"user": "read_only_user",
|
10
|
+
"password": "hockey-blast",
|
11
|
+
"host": "localhost",
|
12
|
+
"port": 5432
|
13
|
+
},
|
14
|
+
"caha": {
|
15
|
+
"dbname": "hockey_blast",
|
16
|
+
"user": "read_only_user",
|
17
|
+
"password": "hockey-blast",
|
18
|
+
"host": "localhost",
|
19
|
+
"port": 5432
|
20
|
+
},
|
21
|
+
"tvice": {
|
22
|
+
"dbname": "hockey_blast",
|
23
|
+
"user": "read_only_user",
|
24
|
+
"password": "hockey-blast",
|
25
|
+
"host": "localhost",
|
26
|
+
"port": 5432
|
27
|
+
},
|
28
|
+
}
|
29
|
+
|
30
|
+
def get_db_params(config_name):
|
31
|
+
if config_name not in DB_PARAMS:
|
32
|
+
raise ValueError(f"Invalid organization: {config_name}")
|
33
|
+
return DB_PARAMS[config_name]
|
34
|
+
|
35
|
+
def create_session(config_name):
|
36
|
+
db_params = get_db_params(config_name)
|
37
|
+
db_url = f"postgresql://{db_params['user']}:{db_params['password']}@{db_params['host']}:{db_params['port']}/{db_params['dbname']}"
|
38
|
+
engine = create_engine(db_url)
|
39
|
+
Session = sessionmaker(bind=engine)
|
40
|
+
return Session()
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import sys
|
2
|
+
import os
|
3
|
+
|
4
|
+
# Add the project root directory to the Python path
|
5
|
+
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
6
|
+
|
7
|
+
from db.models import Human
|
8
|
+
from db.db_connection import create_session
|
9
|
+
|
10
|
+
def get_fake_human_for_stats(session):
|
11
|
+
first_name = "Fake"
|
12
|
+
middle_name = "Stats"
|
13
|
+
last_name = "Human"
|
14
|
+
|
15
|
+
# Check if the human already exists
|
16
|
+
existing_human = session.query(Human).filter_by(first_name=first_name, middle_name=middle_name, last_name=last_name).first()
|
17
|
+
if existing_human:
|
18
|
+
return existing_human.id
|
19
|
+
|
20
|
+
# Create a new human
|
21
|
+
human = Human(first_name=first_name, middle_name=middle_name, last_name=last_name)
|
22
|
+
session.add(human)
|
23
|
+
session.commit() # Commit to get the human.id
|
24
|
+
|
25
|
+
return human.id
|
@@ -0,0 +1,880 @@
|
|
1
|
+
from flask_sqlalchemy import SQLAlchemy
|
2
|
+
from sqlalchemy.ext.declarative import declared_attr
|
3
|
+
|
4
|
+
db = SQLAlchemy()
|
5
|
+
|
6
|
+
# DEPRECATED - comments
|
7
|
+
class Comment(db.Model):
|
8
|
+
__tablename__ = 'comments'
|
9
|
+
id = db.Column(db.Integer, primary_key=True)
|
10
|
+
game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
11
|
+
comment_text = db.Column(db.Text)
|
12
|
+
__table_args__ = (
|
13
|
+
db.UniqueConstraint('game_id', 'comment_text', name='unique_game_comment'),
|
14
|
+
)
|
15
|
+
|
16
|
+
class Division(db.Model):
|
17
|
+
__tablename__ = 'divisions'
|
18
|
+
id = db.Column(db.Integer, primary_key=True)
|
19
|
+
league_number = db.Column(db.Integer)
|
20
|
+
season_number = db.Column(db.Integer)
|
21
|
+
level = db.Column(db.String(100)) # UNIQUE LEVEL NAME
|
22
|
+
skill_id = db.Column(db.Integer, db.ForeignKey('skills.id')) # SKILL LEVEL
|
23
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
24
|
+
__table_args__ = (
|
25
|
+
db.UniqueConstraint('org_id', 'league_number', 'season_number', 'level', name='_org_league_season_level_uc'),
|
26
|
+
)
|
27
|
+
|
28
|
+
class Game(db.Model):
|
29
|
+
__tablename__ = 'games'
|
30
|
+
id = db.Column(db.Integer, primary_key=True)
|
31
|
+
status = db.Column(db.String(255), nullable=False, default='')
|
32
|
+
last_update_ts = db.Column(db.DateTime, nullable=False, default=db.func.current_timestamp())
|
33
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'))
|
34
|
+
game_number = db.Column(db.Integer)
|
35
|
+
date = db.Column(db.Date)
|
36
|
+
time = db.Column(db.Time)
|
37
|
+
day_of_week = db.Column(db.Integer) # 1 to 7 for Monday to Sunday
|
38
|
+
period_length = db.Column(db.Integer) # In minutes
|
39
|
+
location = db.Column(db.String(100))
|
40
|
+
scorekeeper_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
41
|
+
referee_1_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
42
|
+
referee_2_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
43
|
+
home_goalie_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
44
|
+
visitor_goalie_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
45
|
+
visitor_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
46
|
+
home_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
47
|
+
visitor_final_score = db.Column(db.Integer)
|
48
|
+
visitor_period_1_score = db.Column(db.Integer)
|
49
|
+
visitor_period_2_score = db.Column(db.Integer)
|
50
|
+
visitor_period_3_score = db.Column(db.Integer)
|
51
|
+
home_final_score = db.Column(db.Integer)
|
52
|
+
home_period_1_score = db.Column(db.Integer)
|
53
|
+
home_period_2_score = db.Column(db.Integer)
|
54
|
+
home_period_3_score = db.Column(db.Integer)
|
55
|
+
game_type = db.Column(db.String(50))
|
56
|
+
went_to_ot = db.Column(db.Boolean, default=False)
|
57
|
+
home_period_1_shots = db.Column(db.Integer)
|
58
|
+
home_period_2_shots = db.Column(db.Integer)
|
59
|
+
home_period_3_shots = db.Column(db.Integer)
|
60
|
+
home_ot_shots = db.Column(db.Integer, default=0)
|
61
|
+
home_so_shots = db.Column(db.Integer, default=0)
|
62
|
+
visitor_period_1_shots = db.Column(db.Integer)
|
63
|
+
visitor_period_2_shots = db.Column(db.Integer)
|
64
|
+
visitor_period_3_shots = db.Column(db.Integer)
|
65
|
+
visitor_ot_shots = db.Column(db.Integer, default=0)
|
66
|
+
visitor_so_shots = db.Column(db.Integer, default=0)
|
67
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
68
|
+
__table_args__ = (
|
69
|
+
db.UniqueConstraint('org_id', 'game_number', name='_org_game_number_uc'),
|
70
|
+
)
|
71
|
+
|
72
|
+
class GameRoster(db.Model):
|
73
|
+
__tablename__ = 'game_rosters'
|
74
|
+
id = db.Column(db.Integer, primary_key=True)
|
75
|
+
game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
76
|
+
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
77
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
78
|
+
role = db.Column(db.String(10)) # e.g., G (goalie), C (captain), A (alternate), S (substitute)
|
79
|
+
jersey_number = db.Column(db.String(10)) # Player's jersey number
|
80
|
+
__table_args__ = (
|
81
|
+
db.UniqueConstraint('game_id', 'team_id', 'human_id', name='_game_team_human_uc'),
|
82
|
+
)
|
83
|
+
|
84
|
+
class Goal(db.Model):
|
85
|
+
__tablename__ = 'goals'
|
86
|
+
id = db.Column(db.Integer, primary_key=True)
|
87
|
+
game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
88
|
+
scoring_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
89
|
+
opposing_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
90
|
+
period = db.Column(db.String(10)) # Can be "1", "2", "3", "OT", "SO"
|
91
|
+
time = db.Column(db.String(10)) # For elapsed time format
|
92
|
+
goal_scorer_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
93
|
+
assist_1_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
94
|
+
assist_2_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
95
|
+
special_condition = db.Column(db.String(50)) # e.g., PP (power play), SH (short-handed)
|
96
|
+
sequence_number = db.Column(db.Integer)
|
97
|
+
__table_args__ = (
|
98
|
+
db.UniqueConstraint('game_id', 'scoring_team_id', 'sequence_number', name='_goal_team_sequence_uc'),
|
99
|
+
)
|
100
|
+
|
101
|
+
class Human(db.Model):
|
102
|
+
__tablename__ = 'humans'
|
103
|
+
id = db.Column(db.Integer, primary_key=True)
|
104
|
+
first_name = db.Column(db.String(100))
|
105
|
+
middle_name = db.Column(db.String(100))
|
106
|
+
last_name = db.Column(db.String(100))
|
107
|
+
first_date = db.Column(db.Date)
|
108
|
+
last_date = db.Column(db.Date)
|
109
|
+
__table_args__ = (
|
110
|
+
db.UniqueConstraint('first_name', 'middle_name', 'last_name', name='_human_name_uc'),
|
111
|
+
)
|
112
|
+
|
113
|
+
class HumanAlias(db.Model):
|
114
|
+
__tablename__ = 'human_aliases'
|
115
|
+
id = db.Column(db.Integer, primary_key=True)
|
116
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
117
|
+
first_name = db.Column(db.String(100))
|
118
|
+
middle_name = db.Column(db.String(100))
|
119
|
+
last_name = db.Column(db.String(100))
|
120
|
+
first_date = db.Column(db.Date)
|
121
|
+
last_date = db.Column(db.Date)
|
122
|
+
__table_args__ = (
|
123
|
+
db.UniqueConstraint('human_id', 'first_name', 'middle_name', 'last_name', name='_human_alias_uc'),
|
124
|
+
)
|
125
|
+
|
126
|
+
class HumanInTTS(db.Model):
|
127
|
+
__tablename__ = 'humans_in_tts'
|
128
|
+
id = db.Column(db.Integer, primary_key=True)
|
129
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
130
|
+
tts_id = db.Column(db.Integer)
|
131
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
132
|
+
__table_args__ = (
|
133
|
+
db.UniqueConstraint('org_id', 'tts_id', name='_org_tts_uc'),
|
134
|
+
)
|
135
|
+
|
136
|
+
class HumansInLevels(db.Model):
|
137
|
+
__tablename__ = 'humans_in_levels'
|
138
|
+
id = db.Column(db.Integer, primary_key=True)
|
139
|
+
levels_monthly_id = db.Column(db.Integer, db.ForeignKey('levels_monthly.id'))
|
140
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
141
|
+
games_played = db.Column(db.Integer)
|
142
|
+
__table_args__ = (
|
143
|
+
db.UniqueConstraint('levels_monthly_id', 'human_id', name='_levels_monthly_human_uc'),
|
144
|
+
)
|
145
|
+
|
146
|
+
class League(db.Model):
|
147
|
+
__tablename__ = 'leagues'
|
148
|
+
id = db.Column(db.Integer, primary_key=True)
|
149
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
150
|
+
league_number = db.Column(db.Integer)
|
151
|
+
league_name = db.Column(db.String(100))
|
152
|
+
__table_args__ = (
|
153
|
+
db.UniqueConstraint('org_id', 'league_number', name='_org_league_number_uc'),
|
154
|
+
)
|
155
|
+
|
156
|
+
class Skill(db.Model):
|
157
|
+
__tablename__ = 'skills'
|
158
|
+
id = db.Column(db.Integer, primary_key=True)
|
159
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
160
|
+
skill_value = db.Column(db.Float) # A number from 0 (NHL) to 100 (pedestrian)
|
161
|
+
level_name = db.Column(db.String(100), unique=True)
|
162
|
+
level_alternative_name = db.Column(db.String(100))
|
163
|
+
__table_args__ = (
|
164
|
+
db.UniqueConstraint('org_id', 'level_name', name='_org_level_name_uc'),
|
165
|
+
)
|
166
|
+
|
167
|
+
class LevelsMonthly(db.Model):
|
168
|
+
__tablename__ = 'levels_monthly'
|
169
|
+
id = db.Column(db.Integer, primary_key=True)
|
170
|
+
year = db.Column(db.Integer)
|
171
|
+
month = db.Column(db.Integer)
|
172
|
+
league_number = db.Column(db.Integer)
|
173
|
+
season_number = db.Column(db.Integer)
|
174
|
+
season_name = db.Column(db.String(100))
|
175
|
+
level = db.Column(db.String(100))
|
176
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
177
|
+
__table_args__ = (
|
178
|
+
db.UniqueConstraint('org_id', 'year', 'month', 'league_number', 'season_number', 'level', name='_org_year_month_league_season_level_uc'),
|
179
|
+
)
|
180
|
+
|
181
|
+
class OrgLeagueSeasonDates(db.Model):
|
182
|
+
__tablename__ = 'org_league_season_dates'
|
183
|
+
id = db.Column(db.Integer, primary_key=True)
|
184
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
185
|
+
league_number = db.Column(db.Integer)
|
186
|
+
season_number = db.Column(db.Integer)
|
187
|
+
start_date = db.Column(db.Date)
|
188
|
+
end_date = db.Column(db.Date)
|
189
|
+
__table_args__ = (
|
190
|
+
db.UniqueConstraint('org_id', 'league_number', 'season_number', name='_org_league_season_uc_too'),
|
191
|
+
)
|
192
|
+
|
193
|
+
class NamesInOrgLeagueSeason(db.Model):
|
194
|
+
__tablename__ = 'names_in_org_league_season'
|
195
|
+
id = db.Column(db.Integer, primary_key=True)
|
196
|
+
org_league_season_id = db.Column(db.Integer, db.ForeignKey('org_league_season_dates.id'))
|
197
|
+
first_name = db.Column(db.String(100))
|
198
|
+
middle_name = db.Column(db.String(100))
|
199
|
+
last_name = db.Column(db.String(100))
|
200
|
+
first_date = db.Column(db.Date)
|
201
|
+
last_date = db.Column(db.Date)
|
202
|
+
__table_args__ = (
|
203
|
+
db.UniqueConstraint('org_league_season_id', 'first_name', 'middle_name', 'last_name', name='_org_league_season_name_uc'),
|
204
|
+
)
|
205
|
+
|
206
|
+
class NamesInTeams(db.Model):
|
207
|
+
__tablename__ = 'names_in_teams'
|
208
|
+
id = db.Column(db.Integer, primary_key=True)
|
209
|
+
first_name = db.Column(db.String(100))
|
210
|
+
middle_name = db.Column(db.String(100))
|
211
|
+
last_name = db.Column(db.String(100))
|
212
|
+
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
213
|
+
first_date = db.Column(db.Date)
|
214
|
+
last_date = db.Column(db.Date)
|
215
|
+
__table_args__ = (
|
216
|
+
db.UniqueConstraint('team_id', 'first_name', 'middle_name', 'last_name', name='_team_name_uc'),
|
217
|
+
)
|
218
|
+
|
219
|
+
class Organization(db.Model):
|
220
|
+
__tablename__ = 'organizations'
|
221
|
+
id = db.Column(db.Integer, primary_key=True)
|
222
|
+
alias = db.Column(db.String(100), unique=True)
|
223
|
+
organization_name = db.Column(db.String(100), unique=True)
|
224
|
+
|
225
|
+
class Penalty(db.Model):
|
226
|
+
__tablename__ = 'penalties'
|
227
|
+
id = db.Column(db.Integer, primary_key=True)
|
228
|
+
game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
229
|
+
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
230
|
+
period = db.Column(db.String(10)) # Can be "1", "2", "3", "OT", etc.
|
231
|
+
time = db.Column(db.String(10)) # For elapsed time format
|
232
|
+
penalized_player_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
233
|
+
infraction = db.Column(db.String(100))
|
234
|
+
penalty_minutes = db.Column(db.String(3)) # Use this for numeric penalties like 2 minutes and GM, GS, M, PS, C, GR1
|
235
|
+
penalty_start = db.Column(db.String(10)) # Elapsed time for start
|
236
|
+
penalty_end = db.Column(db.String(10)) # Elapsed time for end, can be NULL if unknown
|
237
|
+
penalty_sequence_number = db.Column(db.Integer)
|
238
|
+
__table_args__ = (
|
239
|
+
db.UniqueConstraint('game_id', 'team_id', 'penalty_sequence_number', name='_game_team_penalty_sequence_uc'),
|
240
|
+
)
|
241
|
+
|
242
|
+
class PlayerRole(db.Model):
|
243
|
+
__tablename__ = 'player_roles'
|
244
|
+
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'), primary_key=True)
|
245
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), primary_key=True)
|
246
|
+
role_type = db.Column(db.String(10), primary_key=True) # e.g., G (goalie), C (captain), A (alternate), S (substitute)
|
247
|
+
first_date = db.Column(db.Date)
|
248
|
+
last_date = db.Column(db.Date)
|
249
|
+
__table_args__ = (
|
250
|
+
db.PrimaryKeyConstraint('team_id', 'human_id', 'role_type'),
|
251
|
+
)
|
252
|
+
|
253
|
+
class RefDivision(db.Model):
|
254
|
+
__tablename__ = 'ref_divisions'
|
255
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), primary_key=True)
|
256
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), primary_key=True)
|
257
|
+
first_date = db.Column(db.Date)
|
258
|
+
last_date = db.Column(db.Date)
|
259
|
+
|
260
|
+
class RefereeName(db.Model):
|
261
|
+
__tablename__ = 'referee_names'
|
262
|
+
id = db.Column(db.Integer, primary_key=True)
|
263
|
+
first_name = db.Column(db.String(100))
|
264
|
+
middle_name = db.Column(db.String(100))
|
265
|
+
last_name = db.Column(db.String(100))
|
266
|
+
first_date = db.Column(db.Date)
|
267
|
+
last_date = db.Column(db.Date)
|
268
|
+
__table_args__ = (
|
269
|
+
db.UniqueConstraint('first_name', 'middle_name', 'last_name', name='_referee_name_uc'),
|
270
|
+
)
|
271
|
+
|
272
|
+
class ScorekeeperDivision(db.Model):
|
273
|
+
__tablename__ = 'scorekeeper_divisions'
|
274
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), primary_key=True)
|
275
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), primary_key=True)
|
276
|
+
first_date = db.Column(db.Date)
|
277
|
+
last_date = db.Column(db.Date)
|
278
|
+
|
279
|
+
class ScorekeeperName(db.Model):
|
280
|
+
__tablename__ = 'scorekeeper_names'
|
281
|
+
id = db.Column(db.Integer, primary_key=True)
|
282
|
+
first_name = db.Column(db.String(100))
|
283
|
+
middle_name = db.Column(db.String(100))
|
284
|
+
last_name = db.Column(db.String(100))
|
285
|
+
first_date = db.Column(db.Date)
|
286
|
+
last_date = db.Column(db.Date)
|
287
|
+
__table_args__ = (
|
288
|
+
db.UniqueConstraint('first_name', 'middle_name', 'last_name', name='_scorekeeper_name_uc'),
|
289
|
+
)
|
290
|
+
|
291
|
+
class Season(db.Model):
|
292
|
+
__tablename__ = 'seasons'
|
293
|
+
id = db.Column(db.Integer, primary_key=True)
|
294
|
+
season_number = db.Column(db.Integer)
|
295
|
+
season_name = db.Column(db.String(100))
|
296
|
+
start_date = db.Column(db.Date)
|
297
|
+
end_date = db.Column(db.Date)
|
298
|
+
league_number = db.Column(db.Integer)
|
299
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
300
|
+
__table_args__ = (
|
301
|
+
db.UniqueConstraint('org_id', 'league_number', 'season_number', name='_org_league_season_uc'),
|
302
|
+
)
|
303
|
+
|
304
|
+
class Shootout(db.Model):
|
305
|
+
__tablename__ = 'shootout'
|
306
|
+
id = db.Column(db.Integer, primary_key=True)
|
307
|
+
game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
308
|
+
shooting_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
309
|
+
shooter_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
310
|
+
goalie_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
|
311
|
+
has_scored = db.Column(db.Boolean) # Reflect if goal was scored or not during shootout
|
312
|
+
sequence_number = db.Column(db.Integer)
|
313
|
+
__table_args__ = (
|
314
|
+
db.UniqueConstraint('game_id', 'shooting_team_id' , 'sequence_number', name='_shootout_team_sequence_uc'),
|
315
|
+
)
|
316
|
+
|
317
|
+
class Team(db.Model):
|
318
|
+
__tablename__ = 'teams'
|
319
|
+
id = db.Column(db.Integer, primary_key=True)
|
320
|
+
name = db.Column(db.String(100), unique=True, nullable=False)
|
321
|
+
|
322
|
+
class TeamDivision(db.Model):
|
323
|
+
__tablename__ = 'teams_divisions'
|
324
|
+
id = db.Column(db.Integer, primary_key=True)
|
325
|
+
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
326
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'))
|
327
|
+
__table_args__ = (
|
328
|
+
db.UniqueConstraint('team_id', 'division_id', name='_team_division_uc'),
|
329
|
+
)
|
330
|
+
|
331
|
+
class TeamInTTS(db.Model):
|
332
|
+
__tablename__ = 'teams_in_tts'
|
333
|
+
id = db.Column(db.Integer, primary_key=True)
|
334
|
+
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
|
335
|
+
tts_team_id = db.Column(db.Integer)
|
336
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
337
|
+
__table_args__ = (
|
338
|
+
db.UniqueConstraint('org_id', 'team_id', 'tts_team_id', name='_org_team_tts_uc'),
|
339
|
+
)
|
340
|
+
|
341
|
+
|
342
|
+
# CLASSES FOR STATS ARE BELOW THIS LINE
|
343
|
+
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
|
360
|
+
class BaseStatsHuman(db.Model):
|
361
|
+
__abstract__ = True
|
362
|
+
id = db.Column(db.Integer, primary_key=True)
|
363
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), nullable=False)
|
364
|
+
games_total = db.Column(db.Integer, default=0)
|
365
|
+
games_total_rank = db.Column(db.Integer, default=0)
|
366
|
+
games_skater = db.Column(db.Integer, default=0)
|
367
|
+
games_skater_rank = db.Column(db.Integer, default=0)
|
368
|
+
games_referee = db.Column(db.Integer, default=0)
|
369
|
+
games_referee_rank = db.Column(db.Integer, default=0)
|
370
|
+
games_scorekeeper = db.Column(db.Integer, default=0)
|
371
|
+
games_scorekeeper_rank = db.Column(db.Integer, default=0)
|
372
|
+
games_goalie = db.Column(db.Integer, default=0)
|
373
|
+
games_goalie_rank = db.Column(db.Integer, default=0)
|
374
|
+
total_in_rank = db.Column(db.Integer, default=0)
|
375
|
+
first_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
376
|
+
last_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
377
|
+
|
378
|
+
@declared_attr
|
379
|
+
def __table_args__(cls):
|
380
|
+
return (
|
381
|
+
db.UniqueConstraint('human_id', cls.aggregation_id, name=f'_human_{cls.aggregation_type}_stats_uc1'),
|
382
|
+
db.Index(f'idx_{cls.aggregation_type}_games_total1', cls.aggregation_id, 'games_total'),
|
383
|
+
db.Index(f'idx_{cls.aggregation_type}_games_skater1', cls.aggregation_id, 'games_skater'),
|
384
|
+
db.Index(f'idx_{cls.aggregation_type}_games_referee1', cls.aggregation_id, 'games_referee'),
|
385
|
+
db.Index(f'idx_{cls.aggregation_type}_games_scorekeeper1', cls.aggregation_id, 'games_scorekeeper'),
|
386
|
+
db.Index(f'idx_{cls.aggregation_type}_games_goalie1', cls.aggregation_id, 'games_goalie')
|
387
|
+
)
|
388
|
+
|
389
|
+
class BaseStatsSkater(db.Model):
|
390
|
+
__abstract__ = True
|
391
|
+
id = db.Column(db.Integer, primary_key=True)
|
392
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), nullable=False)
|
393
|
+
games_played = db.Column(db.Integer, default=0)
|
394
|
+
games_played_rank = db.Column(db.Integer, default=0)
|
395
|
+
goals = db.Column(db.Integer, default=0)
|
396
|
+
goals_rank = db.Column(db.Integer, default=0)
|
397
|
+
assists = db.Column(db.Integer, default=0)
|
398
|
+
assists_rank = db.Column(db.Integer, default=0)
|
399
|
+
points = db.Column(db.Integer, default=0)
|
400
|
+
points_rank = db.Column(db.Integer, default=0)
|
401
|
+
penalties = db.Column(db.Integer, default=0)
|
402
|
+
penalties_rank = db.Column(db.Integer, default=0)
|
403
|
+
goals_per_game = db.Column(db.Float, default=0.0)
|
404
|
+
goals_per_game_rank = db.Column(db.Integer, default=0)
|
405
|
+
points_per_game = db.Column(db.Float, default=0.0)
|
406
|
+
points_per_game_rank = db.Column(db.Integer, default=0)
|
407
|
+
assists_per_game = db.Column(db.Float, default=0.0)
|
408
|
+
assists_per_game_rank = db.Column(db.Integer, default=0)
|
409
|
+
penalties_per_game = db.Column(db.Float, default=0.0)
|
410
|
+
penalties_per_game_rank = db.Column(db.Integer, default=0)
|
411
|
+
total_in_rank = db.Column(db.Integer, default=0)
|
412
|
+
first_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
413
|
+
last_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
414
|
+
|
415
|
+
@declared_attr
|
416
|
+
def __table_args__(cls):
|
417
|
+
return (
|
418
|
+
db.UniqueConstraint('human_id', cls.aggregation_id, name=f'_human_{cls.aggregation_type}_uc_skater1'),
|
419
|
+
db.Index(f'idx_{cls.aggregation_type}_goals_per_game3', cls.aggregation_id, 'goals_per_game'),
|
420
|
+
db.Index(f'idx_{cls.aggregation_type}_points_per_game3', cls.aggregation_id, 'points_per_game'),
|
421
|
+
db.Index(f'idx_{cls.aggregation_type}_assists_per_game3', cls.aggregation_id, 'assists_per_game'),
|
422
|
+
db.Index(f'idx_{cls.aggregation_type}_penalties_per_game3', cls.aggregation_id, 'penalties_per_game'),
|
423
|
+
db.Index(f'idx_{cls.aggregation_type}_games_played3', cls.aggregation_id, 'games_played')
|
424
|
+
)
|
425
|
+
|
426
|
+
class BaseStatsGoalie(db.Model):
|
427
|
+
__abstract__ = True
|
428
|
+
id = db.Column(db.Integer, primary_key=True)
|
429
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), nullable=False)
|
430
|
+
games_played = db.Column(db.Integer, default=0)
|
431
|
+
games_played_rank = db.Column(db.Integer, default=0)
|
432
|
+
goals_allowed = db.Column(db.Integer, default=0)
|
433
|
+
goals_allowed_rank = db.Column(db.Integer, default=0)
|
434
|
+
goals_allowed_per_game = db.Column(db.Float, default=0.0)
|
435
|
+
goals_allowed_per_game_rank = db.Column(db.Integer, default=0)
|
436
|
+
shots_faced = db.Column(db.Integer, default=0)
|
437
|
+
shots_faced_rank = db.Column(db.Integer, default=0)
|
438
|
+
save_percentage = db.Column(db.Float, default=0.0)
|
439
|
+
save_percentage_rank = db.Column(db.Integer, default=0)
|
440
|
+
total_in_rank = db.Column(db.Integer, default=0)
|
441
|
+
first_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
442
|
+
last_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
443
|
+
|
444
|
+
@declared_attr
|
445
|
+
def __table_args__(cls):
|
446
|
+
return (
|
447
|
+
db.UniqueConstraint('human_id', cls.aggregation_id, name=f'_human_{cls.aggregation_type}_uc_goalie1'),
|
448
|
+
db.Index(f'idx_{cls.aggregation_type}_goals_allowed_per_game1', cls.aggregation_id, 'goals_allowed_per_game'),
|
449
|
+
db.Index(f'idx_{cls.aggregation_type}_save_percentage1', cls.aggregation_id, 'save_percentage'),
|
450
|
+
db.Index(f'idx_{cls.aggregation_type}_shots_faced1', cls.aggregation_id, 'shots_faced'),
|
451
|
+
db.Index(f'idx_{cls.aggregation_type}_games_played_goalie1', cls.aggregation_id, 'games_played'),
|
452
|
+
db.Index(f'idx_{cls.aggregation_type}_goals_allowed1', cls.aggregation_id, 'goals_allowed')
|
453
|
+
)
|
454
|
+
|
455
|
+
class BaseStatsReferee(db.Model):
|
456
|
+
__abstract__ = True
|
457
|
+
id = db.Column(db.Integer, primary_key=True)
|
458
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), nullable=False)
|
459
|
+
games_reffed = db.Column(db.Integer, default=0)
|
460
|
+
games_reffed_rank = db.Column(db.Integer, default=0)
|
461
|
+
penalties_given = db.Column(db.Integer, default=0)
|
462
|
+
penalties_given_rank = db.Column(db.Integer, default=0)
|
463
|
+
penalties_per_game = db.Column(db.Float, default=0.0)
|
464
|
+
penalties_per_game_rank = db.Column(db.Integer, default=0)
|
465
|
+
gm_given = db.Column(db.Integer, default=0)
|
466
|
+
gm_given_rank = db.Column(db.Integer, default=0)
|
467
|
+
gm_per_game = db.Column(db.Float, default=0.0)
|
468
|
+
gm_per_game_rank = db.Column(db.Integer, default=0)
|
469
|
+
total_in_rank = db.Column(db.Integer, default=0)
|
470
|
+
first_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
471
|
+
last_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
472
|
+
|
473
|
+
@declared_attr
|
474
|
+
def __table_args__(cls):
|
475
|
+
return (
|
476
|
+
db.UniqueConstraint('human_id', cls.aggregation_id, name=f'_human_{cls.aggregation_type}_uc_referee1'),
|
477
|
+
db.Index(f'idx_{cls.aggregation_type}_games_reffed1', cls.aggregation_id, 'games_reffed'),
|
478
|
+
db.Index(f'idx_{cls.aggregation_type}_penalties_given1', cls.aggregation_id, 'penalties_given'),
|
479
|
+
db.Index(f'idx_{cls.aggregation_type}_penalties_per_game1', cls.aggregation_id, 'penalties_per_game'),
|
480
|
+
db.Index(f'idx_{cls.aggregation_type}_gm_given1', cls.aggregation_id, 'gm_given'),
|
481
|
+
db.Index(f'idx_{cls.aggregation_type}_gm_per_game1', cls.aggregation_id, 'gm_per_game')
|
482
|
+
)
|
483
|
+
|
484
|
+
class BaseStatsScorekeeper(db.Model):
|
485
|
+
__abstract__ = True
|
486
|
+
id = db.Column(db.Integer, primary_key=True)
|
487
|
+
human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), nullable=False)
|
488
|
+
games_recorded = db.Column(db.Integer, default=0)
|
489
|
+
games_recorded_rank = db.Column(db.Integer, default=0)
|
490
|
+
sog_given = db.Column(db.Integer, default=0)
|
491
|
+
sog_given_rank = db.Column(db.Integer, default=0)
|
492
|
+
sog_per_game = db.Column(db.Float, default=0.0)
|
493
|
+
sog_per_game_rank = db.Column(db.Integer, default=0)
|
494
|
+
total_in_rank = db.Column(db.Integer, default=0)
|
495
|
+
first_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
496
|
+
last_game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
|
497
|
+
|
498
|
+
@declared_attr
|
499
|
+
def __table_args__(cls):
|
500
|
+
return (
|
501
|
+
db.UniqueConstraint('human_id', cls.aggregation_id, name=f'_human_{cls.aggregation_type}_uc_scorekeeper1'),
|
502
|
+
db.Index(f'idx_{cls.aggregation_type}_games_recorded1', cls.aggregation_id, 'games_recorded'),
|
503
|
+
db.Index(f'idx_{cls.aggregation_type}_sog_given1', cls.aggregation_id, 'sog_given'),
|
504
|
+
db.Index(f'idx_{cls.aggregation_type}_sog_per_game1', cls.aggregation_id, 'sog_per_game')
|
505
|
+
)
|
506
|
+
|
507
|
+
class OrgStatsHuman(BaseStatsHuman):
|
508
|
+
__tablename__ = 'org_stats_human'
|
509
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
510
|
+
|
511
|
+
@declared_attr
|
512
|
+
def aggregation_id(cls):
|
513
|
+
return cls.org_id
|
514
|
+
|
515
|
+
@declared_attr
|
516
|
+
def aggregation_type(cls):
|
517
|
+
return 'org'
|
518
|
+
|
519
|
+
class DivisionStatsHuman(BaseStatsHuman):
|
520
|
+
__tablename__ = 'division_stats_human'
|
521
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
522
|
+
|
523
|
+
@declared_attr
|
524
|
+
def aggregation_id(cls):
|
525
|
+
return cls.division_id
|
526
|
+
|
527
|
+
@declared_attr
|
528
|
+
def aggregation_type(cls):
|
529
|
+
return 'division'
|
530
|
+
|
531
|
+
class OrgStatsSkater(BaseStatsSkater):
|
532
|
+
__tablename__ = 'org_stats_skater'
|
533
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
534
|
+
|
535
|
+
@declared_attr
|
536
|
+
def aggregation_id(cls):
|
537
|
+
return cls.org_id
|
538
|
+
|
539
|
+
@declared_attr
|
540
|
+
def aggregation_type(cls):
|
541
|
+
return 'org'
|
542
|
+
|
543
|
+
class DivisionStatsSkater(BaseStatsSkater):
|
544
|
+
__tablename__ = 'division_stats_skater'
|
545
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
546
|
+
|
547
|
+
@declared_attr
|
548
|
+
def aggregation_id(cls):
|
549
|
+
return cls.division_id
|
550
|
+
|
551
|
+
@declared_attr
|
552
|
+
def aggregation_type(cls):
|
553
|
+
return 'division'
|
554
|
+
|
555
|
+
class OrgStatsGoalie(BaseStatsGoalie):
|
556
|
+
__tablename__ = 'org_stats_goalie'
|
557
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
558
|
+
|
559
|
+
@declared_attr
|
560
|
+
def aggregation_id(cls):
|
561
|
+
return cls.org_id
|
562
|
+
|
563
|
+
@declared_attr
|
564
|
+
def aggregation_type(cls):
|
565
|
+
return 'org'
|
566
|
+
|
567
|
+
class DivisionStatsGoalie(BaseStatsGoalie):
|
568
|
+
__tablename__ = 'division_stats_goalie'
|
569
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
570
|
+
|
571
|
+
@declared_attr
|
572
|
+
def aggregation_id(cls):
|
573
|
+
return cls.division_id
|
574
|
+
|
575
|
+
@declared_attr
|
576
|
+
def aggregation_type(cls):
|
577
|
+
return 'division'
|
578
|
+
|
579
|
+
|
580
|
+
class OrgStatsReferee(BaseStatsReferee):
|
581
|
+
__tablename__ = 'org_stats_referee'
|
582
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
583
|
+
|
584
|
+
@declared_attr
|
585
|
+
def aggregation_id(cls):
|
586
|
+
return cls.org_id
|
587
|
+
|
588
|
+
@declared_attr
|
589
|
+
def aggregation_type(cls):
|
590
|
+
return 'org'
|
591
|
+
|
592
|
+
class DivisionStatsReferee(BaseStatsReferee):
|
593
|
+
__tablename__ = 'division_stats_referee'
|
594
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
595
|
+
|
596
|
+
@declared_attr
|
597
|
+
def aggregation_id(cls):
|
598
|
+
return cls.division_id
|
599
|
+
|
600
|
+
@declared_attr
|
601
|
+
def aggregation_type(cls):
|
602
|
+
return 'division'
|
603
|
+
|
604
|
+
|
605
|
+
class OrgStatsScorekeeper(BaseStatsScorekeeper):
|
606
|
+
__tablename__ = 'org_stats_scorekeeper'
|
607
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
608
|
+
|
609
|
+
@declared_attr
|
610
|
+
def aggregation_id(cls):
|
611
|
+
return cls.org_id
|
612
|
+
|
613
|
+
@declared_attr
|
614
|
+
def aggregation_type(cls):
|
615
|
+
return 'org'
|
616
|
+
|
617
|
+
class DivisionStatsScorekeeper(BaseStatsScorekeeper):
|
618
|
+
__tablename__ = 'division_stats_scorekeeper'
|
619
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
620
|
+
|
621
|
+
@declared_attr
|
622
|
+
def aggregation_id(cls):
|
623
|
+
return cls.division_id
|
624
|
+
|
625
|
+
@declared_attr
|
626
|
+
def aggregation_type(cls):
|
627
|
+
return 'division'
|
628
|
+
|
629
|
+
class OrgStatsDailyHuman(BaseStatsHuman):
|
630
|
+
__tablename__ = 'org_stats_daily_human'
|
631
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
632
|
+
|
633
|
+
@declared_attr
|
634
|
+
def aggregation_id(cls):
|
635
|
+
return cls.org_id
|
636
|
+
|
637
|
+
@declared_attr
|
638
|
+
def aggregation_type(cls):
|
639
|
+
return 'org_daily'
|
640
|
+
|
641
|
+
class OrgStatsWeeklyHuman(BaseStatsHuman):
|
642
|
+
__tablename__ = 'org_stats_weekly_human'
|
643
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
644
|
+
|
645
|
+
@declared_attr
|
646
|
+
def aggregation_id(cls):
|
647
|
+
return cls.org_id
|
648
|
+
|
649
|
+
@declared_attr
|
650
|
+
def aggregation_type(cls):
|
651
|
+
return 'org_weekly'
|
652
|
+
|
653
|
+
class DivisionStatsDailyHuman(BaseStatsHuman):
|
654
|
+
__tablename__ = 'division_stats_daily_human'
|
655
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
656
|
+
|
657
|
+
@declared_attr
|
658
|
+
def aggregation_id(cls):
|
659
|
+
return cls.division_id
|
660
|
+
|
661
|
+
@declared_attr
|
662
|
+
def aggregation_type(cls):
|
663
|
+
return 'division_daily'
|
664
|
+
|
665
|
+
class DivisionStatsWeeklyHuman(BaseStatsHuman):
|
666
|
+
__tablename__ = 'division_stats_weekly_human'
|
667
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
668
|
+
|
669
|
+
@declared_attr
|
670
|
+
def aggregation_id(cls):
|
671
|
+
return cls.division_id
|
672
|
+
|
673
|
+
@declared_attr
|
674
|
+
def aggregation_type(cls):
|
675
|
+
return 'division_weekly'
|
676
|
+
|
677
|
+
class OrgStatsDailySkater(BaseStatsSkater):
|
678
|
+
__tablename__ = 'org_stats_daily_skater'
|
679
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
680
|
+
|
681
|
+
@declared_attr
|
682
|
+
def aggregation_id(cls):
|
683
|
+
return cls.org_id
|
684
|
+
|
685
|
+
@declared_attr
|
686
|
+
def aggregation_type(cls):
|
687
|
+
return 'org_daily'
|
688
|
+
|
689
|
+
class OrgStatsWeeklySkater(BaseStatsSkater):
|
690
|
+
__tablename__ = 'org_stats_weekly_skater'
|
691
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
692
|
+
|
693
|
+
@declared_attr
|
694
|
+
def aggregation_id(cls):
|
695
|
+
return cls.org_id
|
696
|
+
|
697
|
+
@declared_attr
|
698
|
+
def aggregation_type(cls):
|
699
|
+
return 'org_weekly'
|
700
|
+
|
701
|
+
class DivisionStatsDailySkater(BaseStatsSkater):
|
702
|
+
__tablename__ = 'division_stats_daily_skater'
|
703
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
704
|
+
|
705
|
+
@declared_attr
|
706
|
+
def aggregation_id(cls):
|
707
|
+
return cls.division_id
|
708
|
+
|
709
|
+
@declared_attr
|
710
|
+
def aggregation_type(cls):
|
711
|
+
return 'division_daily'
|
712
|
+
|
713
|
+
class DivisionStatsWeeklySkater(BaseStatsSkater):
|
714
|
+
__tablename__ = 'division_stats_weekly_skater'
|
715
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
716
|
+
|
717
|
+
@declared_attr
|
718
|
+
def aggregation_id(cls):
|
719
|
+
return cls.division_id
|
720
|
+
|
721
|
+
@declared_attr
|
722
|
+
def aggregation_type(cls):
|
723
|
+
return 'division_weekly'
|
724
|
+
|
725
|
+
class OrgStatsDailyGoalie(BaseStatsGoalie):
|
726
|
+
__tablename__ = 'org_stats_daily_goalie'
|
727
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
728
|
+
|
729
|
+
@declared_attr
|
730
|
+
def aggregation_id(cls):
|
731
|
+
return cls.org_id
|
732
|
+
|
733
|
+
@declared_attr
|
734
|
+
def aggregation_type(cls):
|
735
|
+
return 'org_daily'
|
736
|
+
|
737
|
+
class OrgStatsWeeklyGoalie(BaseStatsGoalie):
|
738
|
+
__tablename__ = 'org_stats_weekly_goalie'
|
739
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
740
|
+
|
741
|
+
@declared_attr
|
742
|
+
def aggregation_id(cls):
|
743
|
+
return cls.org_id
|
744
|
+
|
745
|
+
@declared_attr
|
746
|
+
def aggregation_type(cls):
|
747
|
+
return 'org_weekly'
|
748
|
+
|
749
|
+
class DivisionStatsDailyGoalie(BaseStatsGoalie):
|
750
|
+
__tablename__ = 'division_stats_daily_goalie'
|
751
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
752
|
+
|
753
|
+
@declared_attr
|
754
|
+
def aggregation_id(cls):
|
755
|
+
return cls.division_id
|
756
|
+
|
757
|
+
@declared_attr
|
758
|
+
def aggregation_type(cls):
|
759
|
+
return 'division_daily'
|
760
|
+
|
761
|
+
class DivisionStatsWeeklyGoalie(BaseStatsGoalie):
|
762
|
+
__tablename__ = 'division_stats_weekly_goalie'
|
763
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
764
|
+
|
765
|
+
@declared_attr
|
766
|
+
def aggregation_id(cls):
|
767
|
+
return cls.division_id
|
768
|
+
|
769
|
+
@declared_attr
|
770
|
+
def aggregation_type(cls):
|
771
|
+
return 'division_weekly'
|
772
|
+
|
773
|
+
class OrgStatsDailyReferee(BaseStatsReferee):
|
774
|
+
__tablename__ = 'org_stats_daily_referee'
|
775
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
776
|
+
|
777
|
+
@declared_attr
|
778
|
+
def aggregation_id(cls):
|
779
|
+
return cls.org_id
|
780
|
+
|
781
|
+
@declared_attr
|
782
|
+
def aggregation_type(cls):
|
783
|
+
return 'org_daily'
|
784
|
+
|
785
|
+
class OrgStatsWeeklyReferee(BaseStatsReferee):
|
786
|
+
__tablename__ = 'org_stats_weekly_referee'
|
787
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
788
|
+
|
789
|
+
@declared_attr
|
790
|
+
def aggregation_id(cls):
|
791
|
+
return cls.org_id
|
792
|
+
|
793
|
+
@declared_attr
|
794
|
+
def aggregation_type(cls):
|
795
|
+
return 'org_weekly'
|
796
|
+
|
797
|
+
class DivisionStatsDailyReferee(BaseStatsReferee):
|
798
|
+
__tablename__ = 'division_stats_daily_referee'
|
799
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
800
|
+
|
801
|
+
@declared_attr
|
802
|
+
def aggregation_id(cls):
|
803
|
+
return cls.division_id
|
804
|
+
|
805
|
+
@declared_attr
|
806
|
+
def aggregation_type(cls):
|
807
|
+
return 'division_daily'
|
808
|
+
|
809
|
+
class DivisionStatsWeeklyReferee(BaseStatsReferee):
|
810
|
+
__tablename__ = 'division_stats_weekly_referee'
|
811
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
812
|
+
|
813
|
+
@declared_attr
|
814
|
+
def aggregation_id(cls):
|
815
|
+
return cls.division_id
|
816
|
+
|
817
|
+
@declared_attr
|
818
|
+
def aggregation_type(cls):
|
819
|
+
return 'division_weekly'
|
820
|
+
|
821
|
+
class OrgStatsDailyScorekeeper(BaseStatsScorekeeper):
|
822
|
+
__tablename__ = 'org_stats_daily_scorekeeper'
|
823
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
824
|
+
|
825
|
+
@declared_attr
|
826
|
+
def aggregation_id(cls):
|
827
|
+
return cls.org_id
|
828
|
+
|
829
|
+
@declared_attr
|
830
|
+
def aggregation_type(cls):
|
831
|
+
return 'org_daily'
|
832
|
+
|
833
|
+
class OrgStatsWeeklyScorekeeper(BaseStatsScorekeeper):
|
834
|
+
__tablename__ = 'org_stats_weekly_scorekeeper'
|
835
|
+
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
836
|
+
|
837
|
+
@declared_attr
|
838
|
+
def aggregation_id(cls):
|
839
|
+
return cls.org_id
|
840
|
+
|
841
|
+
@declared_attr
|
842
|
+
def aggregation_type(cls):
|
843
|
+
return 'org_weekly'
|
844
|
+
|
845
|
+
class DivisionStatsDailyScorekeeper(BaseStatsScorekeeper):
|
846
|
+
__tablename__ = 'division_stats_daily_scorekeeper'
|
847
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
848
|
+
|
849
|
+
@declared_attr
|
850
|
+
def aggregation_id(cls):
|
851
|
+
return cls.division_id
|
852
|
+
|
853
|
+
@declared_attr
|
854
|
+
def aggregation_type(cls):
|
855
|
+
return 'division_daily'
|
856
|
+
|
857
|
+
class DivisionStatsWeeklyScorekeeper(BaseStatsScorekeeper):
|
858
|
+
__tablename__ = 'division_stats_weekly_scorekeeper'
|
859
|
+
division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), nullable=False)
|
860
|
+
|
861
|
+
@declared_attr
|
862
|
+
def aggregation_id(cls):
|
863
|
+
return cls.division_id
|
864
|
+
|
865
|
+
@declared_attr
|
866
|
+
def aggregation_type(cls):
|
867
|
+
return 'division_weekly'
|
868
|
+
|
869
|
+
# # MANUAL AMENDS HAPPEN HERE :)
|
870
|
+
# from db_connection import create_session
|
871
|
+
# session = create_session("sharksice")
|
872
|
+
|
873
|
+
# # Update org_id to 1 for all records in the Division table
|
874
|
+
# session.query(Organization).filter(Organization.id == 3).update({Organization.alias: 'caha'})
|
875
|
+
|
876
|
+
# # Commit the changes to the database
|
877
|
+
# session.commit()
|
878
|
+
|
879
|
+
|
880
|
+
# print("Updated!")
|
@@ -0,0 +1,8 @@
|
|
1
|
+
hockey_blast_common_lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
hockey_blast_common_lib/db_connection.py,sha256=aY5VcbB-AUJJpsrnNnyqj8ph_j4UOMt44WD_x6GMUFc,1170
|
3
|
+
hockey_blast_common_lib/db_utils.py,sha256=Lq_PGuYSK-lS9ujd8TG7ciSXO3WJASW96NstENq4GvI,771
|
4
|
+
hockey_blast_common_lib/models.py,sha256=Sfq1dwaDx4fQpfd66o1R_3AyRNKv34vjnvY4B-ebqg8,33910
|
5
|
+
hockey_blast_common_lib-0.1.3.dist-info/METADATA,sha256=8wFNPN9UE4I7uU2mUUAumix1QXMx3iku9b-iRaF9OKY,341
|
6
|
+
hockey_blast_common_lib-0.1.3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
7
|
+
hockey_blast_common_lib-0.1.3.dist-info/top_level.txt,sha256=wIR4LIkE40npoA2QlOdfCYlgFeGbsHR8Z6r0h46Vtgc,24
|
8
|
+
hockey_blast_common_lib-0.1.3.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
hockey_blast_common_lib
|
@@ -1,4 +0,0 @@
|
|
1
|
-
hockey_blast_common_lib-0.1.1.dist-info/METADATA,sha256=hobCZ-t8Fc06q_9HTmGqcl-RpqB7gyNN5S65O8HXz40,341
|
2
|
-
hockey_blast_common_lib-0.1.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
3
|
-
hockey_blast_common_lib-0.1.1.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
4
|
-
hockey_blast_common_lib-0.1.1.dist-info/RECORD,,
|
@@ -1 +0,0 @@
|
|
1
|
-
|
File without changes
|