hockey-blast-common-lib 0.1.5__tar.gz → 0.1.7__tar.gz

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.
Files changed (16) hide show
  1. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/PKG-INFO +5 -7
  2. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/hockey_blast_common_lib/db_connection.py +0 -21
  3. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/hockey_blast_common_lib/db_utils.py +6 -1
  4. hockey_blast_common_lib-0.1.7/hockey_blast_common_lib/models.py +353 -0
  5. hockey_blast_common_lib-0.1.7/hockey_blast_common_lib/stats_models.py +532 -0
  6. hockey_blast_common_lib-0.1.7/hockey_blast_common_lib/wsgi.py +16 -0
  7. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/hockey_blast_common_lib.egg-info/PKG-INFO +5 -7
  8. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/hockey_blast_common_lib.egg-info/SOURCES.txt +2 -0
  9. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/hockey_blast_common_lib.egg-info/requires.txt +0 -1
  10. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/setup.py +1 -2
  11. hockey-blast-common-lib-0.1.5/hockey_blast_common_lib/models.py +0 -880
  12. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/README.md +0 -0
  13. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/hockey_blast_common_lib/__init__.py +0 -0
  14. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/hockey_blast_common_lib.egg-info/dependency_links.txt +0 -0
  15. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/hockey_blast_common_lib.egg-info/top_level.txt +0 -0
  16. {hockey-blast-common-lib-0.1.5 → hockey_blast_common_lib-0.1.7}/setup.cfg +0 -0
@@ -1,13 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hockey-blast-common-lib
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: Common library for shared functionality and DB models
5
- Home-page: UNKNOWN
6
5
  Author: Pavel Kletskov
7
6
  Author-email: kletskov@gmail.com
8
- License: UNKNOWN
9
- Platform: UNKNOWN
10
7
  Requires-Python: >=3.7
11
-
12
- UNKNOWN
13
-
8
+ Requires-Dist: setuptools
9
+ Requires-Dist: Flask-SQLAlchemy
10
+ Requires-Dist: SQLAlchemy
11
+ Requires-Dist: requests
@@ -11,27 +11,6 @@ DB_PARAMS = {
11
11
  "host": "localhost",
12
12
  "port": 5432
13
13
  },
14
- "sharksice": {
15
- "dbname": "hockey_blast",
16
- "user": "read_only_user",
17
- "password": "hockey-blast",
18
- "host": "localhost",
19
- "port": 5432
20
- },
21
- "caha": {
22
- "dbname": "hockey_blast",
23
- "user": "read_only_user",
24
- "password": "hockey-blast",
25
- "host": "localhost",
26
- "port": 5432
27
- },
28
- "tvice": {
29
- "dbname": "hockey_blast",
30
- "user": "read_only_user",
31
- "password": "hockey-blast",
32
- "host": "localhost",
33
- "port": 5432
34
- },
35
14
  }
36
15
 
37
16
  def get_db_params(config_name):
@@ -2,6 +2,7 @@ import sys
2
2
  import os
3
3
 
4
4
  from models import Human
5
+ from db_connection import create_session
5
6
 
6
7
  def get_fake_human_for_stats(session):
7
8
  first_name = "Fake"
@@ -18,4 +19,8 @@ def get_fake_human_for_stats(session):
18
19
  session.add(human)
19
20
  session.commit() # Commit to get the human.id
20
21
 
21
- return human.id
22
+ return human.id
23
+
24
+ # session = create_session("hockey-blast-radonly")
25
+ # human_id = get_fake_human_for_stats(session)
26
+ # print(f"Human ID: {human_id}")
@@ -0,0 +1,353 @@
1
+ from flask_sqlalchemy import SQLAlchemy
2
+
3
+ db = SQLAlchemy()
4
+
5
+ # DEPRECATED - comments
6
+ class Comment(db.Model):
7
+ __tablename__ = 'comments'
8
+ id = db.Column(db.Integer, primary_key=True)
9
+ game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
10
+ comment_text = db.Column(db.Text)
11
+ __table_args__ = (
12
+ db.UniqueConstraint('game_id', 'comment_text', name='unique_game_comment'),
13
+ )
14
+
15
+ class Division(db.Model):
16
+ __tablename__ = 'divisions'
17
+ id = db.Column(db.Integer, primary_key=True)
18
+ league_number = db.Column(db.Integer)
19
+ season_number = db.Column(db.Integer)
20
+ level = db.Column(db.String(100)) # UNIQUE LEVEL NAME
21
+ skill_id = db.Column(db.Integer, db.ForeignKey('skills.id')) # SKILL LEVEL
22
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
23
+ __table_args__ = (
24
+ db.UniqueConstraint('org_id', 'league_number', 'season_number', 'level', name='_org_league_season_level_uc'),
25
+ )
26
+
27
+ class Game(db.Model):
28
+ __tablename__ = 'games'
29
+ id = db.Column(db.Integer, primary_key=True)
30
+ status = db.Column(db.String(255), nullable=False, default='')
31
+ last_update_ts = db.Column(db.DateTime, nullable=False, default=db.func.current_timestamp())
32
+ division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'))
33
+ game_number = db.Column(db.Integer)
34
+ date = db.Column(db.Date)
35
+ time = db.Column(db.Time)
36
+ day_of_week = db.Column(db.Integer) # 1 to 7 for Monday to Sunday
37
+ period_length = db.Column(db.Integer) # In minutes
38
+ location = db.Column(db.String(100))
39
+ scorekeeper_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
40
+ referee_1_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
41
+ referee_2_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
42
+ home_goalie_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
43
+ visitor_goalie_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
44
+ visitor_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
45
+ home_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
46
+ visitor_final_score = db.Column(db.Integer)
47
+ visitor_period_1_score = db.Column(db.Integer)
48
+ visitor_period_2_score = db.Column(db.Integer)
49
+ visitor_period_3_score = db.Column(db.Integer)
50
+ home_final_score = db.Column(db.Integer)
51
+ home_period_1_score = db.Column(db.Integer)
52
+ home_period_2_score = db.Column(db.Integer)
53
+ home_period_3_score = db.Column(db.Integer)
54
+ game_type = db.Column(db.String(50))
55
+ went_to_ot = db.Column(db.Boolean, default=False)
56
+ home_period_1_shots = db.Column(db.Integer)
57
+ home_period_2_shots = db.Column(db.Integer)
58
+ home_period_3_shots = db.Column(db.Integer)
59
+ home_ot_shots = db.Column(db.Integer, default=0)
60
+ home_so_shots = db.Column(db.Integer, default=0)
61
+ visitor_period_1_shots = db.Column(db.Integer)
62
+ visitor_period_2_shots = db.Column(db.Integer)
63
+ visitor_period_3_shots = db.Column(db.Integer)
64
+ visitor_ot_shots = db.Column(db.Integer, default=0)
65
+ visitor_so_shots = db.Column(db.Integer, default=0)
66
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
67
+ __table_args__ = (
68
+ db.UniqueConstraint('org_id', 'game_number', name='_org_game_number_uc'),
69
+ )
70
+
71
+ class GameRoster(db.Model):
72
+ __tablename__ = 'game_rosters'
73
+ id = db.Column(db.Integer, primary_key=True)
74
+ game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
75
+ team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
76
+ human_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
77
+ role = db.Column(db.String(10)) # e.g., G (goalie), C (captain), A (alternate), S (substitute)
78
+ jersey_number = db.Column(db.String(10)) # Player's jersey number
79
+ __table_args__ = (
80
+ db.UniqueConstraint('game_id', 'team_id', 'human_id', name='_game_team_human_uc'),
81
+ )
82
+
83
+ class Goal(db.Model):
84
+ __tablename__ = 'goals'
85
+ id = db.Column(db.Integer, primary_key=True)
86
+ game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
87
+ scoring_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
88
+ opposing_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
89
+ period = db.Column(db.String(10)) # Can be "1", "2", "3", "OT", "SO"
90
+ time = db.Column(db.String(10)) # For elapsed time format
91
+ goal_scorer_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
92
+ assist_1_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
93
+ assist_2_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
94
+ special_condition = db.Column(db.String(50)) # e.g., PP (power play), SH (short-handed)
95
+ sequence_number = db.Column(db.Integer)
96
+ __table_args__ = (
97
+ db.UniqueConstraint('game_id', 'scoring_team_id', 'sequence_number', name='_goal_team_sequence_uc'),
98
+ )
99
+
100
+ class Human(db.Model):
101
+ __tablename__ = 'humans'
102
+ id = db.Column(db.Integer, primary_key=True)
103
+ first_name = db.Column(db.String(100))
104
+ middle_name = db.Column(db.String(100))
105
+ last_name = db.Column(db.String(100))
106
+ first_date = db.Column(db.Date)
107
+ last_date = db.Column(db.Date)
108
+ __table_args__ = (
109
+ db.UniqueConstraint('first_name', 'middle_name', 'last_name', name='_human_name_uc'),
110
+ )
111
+
112
+ class HumanAlias(db.Model):
113
+ __tablename__ = 'human_aliases'
114
+ id = db.Column(db.Integer, primary_key=True)
115
+ human_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
116
+ first_name = db.Column(db.String(100))
117
+ middle_name = db.Column(db.String(100))
118
+ last_name = db.Column(db.String(100))
119
+ first_date = db.Column(db.Date)
120
+ last_date = db.Column(db.Date)
121
+ __table_args__ = (
122
+ db.UniqueConstraint('human_id', 'first_name', 'middle_name', 'last_name', name='_human_alias_uc'),
123
+ )
124
+
125
+ class HumanInTTS(db.Model):
126
+ __tablename__ = 'humans_in_tts'
127
+ id = db.Column(db.Integer, primary_key=True)
128
+ human_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
129
+ tts_id = db.Column(db.Integer)
130
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
131
+ __table_args__ = (
132
+ db.UniqueConstraint('org_id', 'tts_id', name='_org_tts_uc'),
133
+ )
134
+
135
+ class HumansInLevels(db.Model):
136
+ __tablename__ = 'humans_in_levels'
137
+ id = db.Column(db.Integer, primary_key=True)
138
+ levels_monthly_id = db.Column(db.Integer, db.ForeignKey('levels_monthly.id'))
139
+ human_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
140
+ games_played = db.Column(db.Integer)
141
+ __table_args__ = (
142
+ db.UniqueConstraint('levels_monthly_id', 'human_id', name='_levels_monthly_human_uc'),
143
+ )
144
+
145
+ class League(db.Model):
146
+ __tablename__ = 'leagues'
147
+ id = db.Column(db.Integer, primary_key=True)
148
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
149
+ league_number = db.Column(db.Integer)
150
+ league_name = db.Column(db.String(100))
151
+ __table_args__ = (
152
+ db.UniqueConstraint('org_id', 'league_number', name='_org_league_number_uc'),
153
+ )
154
+
155
+ class Skill(db.Model):
156
+ __tablename__ = 'skills'
157
+ id = db.Column(db.Integer, primary_key=True)
158
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
159
+ skill_value = db.Column(db.Float) # A number from 0 (NHL) to 100 (pedestrian)
160
+ level_name = db.Column(db.String(100), unique=True)
161
+ level_alternative_name = db.Column(db.String(100))
162
+ __table_args__ = (
163
+ db.UniqueConstraint('org_id', 'level_name', name='_org_level_name_uc'),
164
+ )
165
+
166
+ class LevelsMonthly(db.Model):
167
+ __tablename__ = 'levels_monthly'
168
+ id = db.Column(db.Integer, primary_key=True)
169
+ year = db.Column(db.Integer)
170
+ month = db.Column(db.Integer)
171
+ league_number = db.Column(db.Integer)
172
+ season_number = db.Column(db.Integer)
173
+ season_name = db.Column(db.String(100))
174
+ level = db.Column(db.String(100))
175
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
176
+ __table_args__ = (
177
+ db.UniqueConstraint('org_id', 'year', 'month', 'league_number', 'season_number', 'level', name='_org_year_month_league_season_level_uc'),
178
+ )
179
+
180
+ class OrgLeagueSeasonDates(db.Model):
181
+ __tablename__ = 'org_league_season_dates'
182
+ id = db.Column(db.Integer, primary_key=True)
183
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
184
+ league_number = db.Column(db.Integer)
185
+ season_number = db.Column(db.Integer)
186
+ start_date = db.Column(db.Date)
187
+ end_date = db.Column(db.Date)
188
+ __table_args__ = (
189
+ db.UniqueConstraint('org_id', 'league_number', 'season_number', name='_org_league_season_uc_too'),
190
+ )
191
+
192
+ class NamesInOrgLeagueSeason(db.Model):
193
+ __tablename__ = 'names_in_org_league_season'
194
+ id = db.Column(db.Integer, primary_key=True)
195
+ org_league_season_id = db.Column(db.Integer, db.ForeignKey('org_league_season_dates.id'))
196
+ first_name = db.Column(db.String(100))
197
+ middle_name = db.Column(db.String(100))
198
+ last_name = db.Column(db.String(100))
199
+ first_date = db.Column(db.Date)
200
+ last_date = db.Column(db.Date)
201
+ __table_args__ = (
202
+ db.UniqueConstraint('org_league_season_id', 'first_name', 'middle_name', 'last_name', name='_org_league_season_name_uc'),
203
+ )
204
+
205
+ class NamesInTeams(db.Model):
206
+ __tablename__ = 'names_in_teams'
207
+ id = db.Column(db.Integer, primary_key=True)
208
+ first_name = db.Column(db.String(100))
209
+ middle_name = db.Column(db.String(100))
210
+ last_name = db.Column(db.String(100))
211
+ team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
212
+ first_date = db.Column(db.Date)
213
+ last_date = db.Column(db.Date)
214
+ __table_args__ = (
215
+ db.UniqueConstraint('team_id', 'first_name', 'middle_name', 'last_name', name='_team_name_uc'),
216
+ )
217
+
218
+ class Organization(db.Model):
219
+ __tablename__ = 'organizations'
220
+ id = db.Column(db.Integer, primary_key=True)
221
+ alias = db.Column(db.String(100), unique=True)
222
+ organization_name = db.Column(db.String(100), unique=True)
223
+
224
+ class Penalty(db.Model):
225
+ __tablename__ = 'penalties'
226
+ id = db.Column(db.Integer, primary_key=True)
227
+ game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
228
+ team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
229
+ period = db.Column(db.String(10)) # Can be "1", "2", "3", "OT", etc.
230
+ time = db.Column(db.String(10)) # For elapsed time format
231
+ penalized_player_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
232
+ infraction = db.Column(db.String(100))
233
+ penalty_minutes = db.Column(db.String(3)) # Use this for numeric penalties like 2 minutes and GM, GS, M, PS, C, GR1
234
+ penalty_start = db.Column(db.String(10)) # Elapsed time for start
235
+ penalty_end = db.Column(db.String(10)) # Elapsed time for end, can be NULL if unknown
236
+ penalty_sequence_number = db.Column(db.Integer)
237
+ __table_args__ = (
238
+ db.UniqueConstraint('game_id', 'team_id', 'penalty_sequence_number', name='_game_team_penalty_sequence_uc'),
239
+ )
240
+
241
+ class PlayerRole(db.Model):
242
+ __tablename__ = 'player_roles'
243
+ team_id = db.Column(db.Integer, db.ForeignKey('teams.id'), primary_key=True)
244
+ human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), primary_key=True)
245
+ role_type = db.Column(db.String(10), primary_key=True) # e.g., G (goalie), C (captain), A (alternate), S (substitute)
246
+ first_date = db.Column(db.Date)
247
+ last_date = db.Column(db.Date)
248
+ __table_args__ = (
249
+ db.PrimaryKeyConstraint('team_id', 'human_id', 'role_type'),
250
+ )
251
+
252
+ class RefDivision(db.Model):
253
+ __tablename__ = 'ref_divisions'
254
+ division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), primary_key=True)
255
+ human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), primary_key=True)
256
+ first_date = db.Column(db.Date)
257
+ last_date = db.Column(db.Date)
258
+
259
+ class RefereeName(db.Model):
260
+ __tablename__ = 'referee_names'
261
+ id = db.Column(db.Integer, primary_key=True)
262
+ first_name = db.Column(db.String(100))
263
+ middle_name = db.Column(db.String(100))
264
+ last_name = db.Column(db.String(100))
265
+ first_date = db.Column(db.Date)
266
+ last_date = db.Column(db.Date)
267
+ __table_args__ = (
268
+ db.UniqueConstraint('first_name', 'middle_name', 'last_name', name='_referee_name_uc'),
269
+ )
270
+
271
+ class ScorekeeperDivision(db.Model):
272
+ __tablename__ = 'scorekeeper_divisions'
273
+ division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'), primary_key=True)
274
+ human_id = db.Column(db.Integer, db.ForeignKey('humans.id'), primary_key=True)
275
+ first_date = db.Column(db.Date)
276
+ last_date = db.Column(db.Date)
277
+
278
+ class ScorekeeperName(db.Model):
279
+ __tablename__ = 'scorekeeper_names'
280
+ id = db.Column(db.Integer, primary_key=True)
281
+ first_name = db.Column(db.String(100))
282
+ middle_name = db.Column(db.String(100))
283
+ last_name = db.Column(db.String(100))
284
+ first_date = db.Column(db.Date)
285
+ last_date = db.Column(db.Date)
286
+ __table_args__ = (
287
+ db.UniqueConstraint('first_name', 'middle_name', 'last_name', name='_scorekeeper_name_uc'),
288
+ )
289
+
290
+ class Season(db.Model):
291
+ __tablename__ = 'seasons'
292
+ id = db.Column(db.Integer, primary_key=True)
293
+ season_number = db.Column(db.Integer)
294
+ season_name = db.Column(db.String(100))
295
+ start_date = db.Column(db.Date)
296
+ end_date = db.Column(db.Date)
297
+ league_number = db.Column(db.Integer)
298
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
299
+ __table_args__ = (
300
+ db.UniqueConstraint('org_id', 'league_number', 'season_number', name='_org_league_season_uc'),
301
+ )
302
+
303
+ class Shootout(db.Model):
304
+ __tablename__ = 'shootout'
305
+ id = db.Column(db.Integer, primary_key=True)
306
+ game_id = db.Column(db.Integer, db.ForeignKey('games.id'))
307
+ shooting_team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
308
+ shooter_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
309
+ goalie_id = db.Column(db.Integer, db.ForeignKey('humans.id'))
310
+ has_scored = db.Column(db.Boolean) # Reflect if goal was scored or not during shootout
311
+ sequence_number = db.Column(db.Integer)
312
+ __table_args__ = (
313
+ db.UniqueConstraint('game_id', 'shooting_team_id' , 'sequence_number', name='_shootout_team_sequence_uc'),
314
+ )
315
+
316
+ class Team(db.Model):
317
+ __tablename__ = 'teams'
318
+ id = db.Column(db.Integer, primary_key=True)
319
+ name = db.Column(db.String(100), unique=True, nullable=False)
320
+
321
+ class TeamDivision(db.Model):
322
+ __tablename__ = 'teams_divisions'
323
+ id = db.Column(db.Integer, primary_key=True)
324
+ team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
325
+ division_id = db.Column(db.Integer, db.ForeignKey('divisions.id'))
326
+ __table_args__ = (
327
+ db.UniqueConstraint('team_id', 'division_id', name='_team_division_uc'),
328
+ )
329
+
330
+ class TeamInTTS(db.Model):
331
+ __tablename__ = 'teams_in_tts'
332
+ id = db.Column(db.Integer, primary_key=True)
333
+ team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
334
+ tts_team_id = db.Column(db.Integer)
335
+ org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
336
+ __table_args__ = (
337
+ db.UniqueConstraint('org_id', 'team_id', 'tts_team_id', name='_org_team_tts_uc'),
338
+ )
339
+
340
+
341
+
342
+ # # MANUAL AMENDS HAPPEN HERE :)
343
+ # from db_connection import create_session
344
+ # session = create_session("sharksice")
345
+
346
+ # # Update org_id to 1 for all records in the Division table
347
+ # session.query(Organization).filter(Organization.id == 3).update({Organization.alias: 'caha'})
348
+
349
+ # # Commit the changes to the database
350
+ # session.commit()
351
+
352
+
353
+ # print("Updated!")