]> de.git.xonotic.org Git - xonotic/xonstat.git/blob - xonstat/models/__init__.py
Make models a package instead of being a single (huge) module.
[xonotic/xonstat.git] / xonstat / models / __init__.py
1 from sqlalchemy import MetaData
2 from sqlalchemy.ext.declarative import declarative_base
3 from sqlalchemy.orm import scoped_session, sessionmaker, mapper
4
5 from xonstat.models.game import *
6 from xonstat.models.main import *
7 from xonstat.models.map import *
8 from xonstat.models.player import *
9 from xonstat.models.server import *
10
11 DBSession = scoped_session(sessionmaker())
12 Base = declarative_base()
13
14
15 def initialize_db(engine=None):
16     DBSession.configure(bind=engine)
17
18     Base.metadata.bind = engine
19     Base.metadata.create_all(engine)
20
21     # Since the schema is actually defined elsewhere, we use reflection to determine the
22     # structure of the models instead of specifying them over again in Python.
23     metadata = MetaData(bind=engine)
24     metadata.reflect()
25
26     # Assign all the tables to objects
27     achievements_table = metadata.tables['achievements']
28     cd_achievement_table = metadata.tables['cd_achievement']
29     cd_game_type_table = metadata.tables['cd_game_type']
30     cd_weapon_table = metadata.tables['cd_weapon']
31     db_version_table = metadata.tables['db_version']
32     games_table = metadata.tables['games']
33     hashkeys_table = metadata.tables['hashkeys']
34     maps_table = metadata.tables['maps']
35     player_game_stats_table = metadata.tables['player_game_stats']
36     players_table = metadata.tables['players']
37     player_weapon_stats_table = metadata.tables['player_weapon_stats']
38     servers_table = metadata.tables['servers']
39     player_nicks_table = metadata.tables['player_nicks']
40     player_elos_table = metadata.tables['player_elos']
41     player_ranks_table = metadata.tables['player_ranks']
42     player_captimes_table = metadata.tables['player_map_captimes']
43     summary_stats_table = metadata.tables['summary_stats']
44     team_game_stats_table = metadata.tables['team_game_stats']
45     player_game_anticheats_table = metadata.tables['player_game_anticheats']
46     player_groups_table = metadata.tables['player_groups']
47     active_players_table = metadata.tables['active_players_mv']
48     active_servers_table = metadata.tables['active_servers_mv']
49     active_maps_table = metadata.tables['active_maps_mv']
50     player_medals_table = metadata.tables['player_medals']
51
52     # Map the tables and the objects together
53     mapper(PlayerAchievement, achievements_table)
54     mapper(Achievement, cd_achievement_table)
55     mapper(GameType, cd_game_type_table)
56     mapper(Weapon, cd_weapon_table)
57     mapper(Game, games_table)
58     mapper(Hashkey, hashkeys_table)
59     mapper(Map, maps_table)
60     mapper(PlayerGameStat, player_game_stats_table)
61     mapper(Player, players_table)
62     mapper(PlayerWeaponStat, player_weapon_stats_table)
63     mapper(Server, servers_table)
64     mapper(PlayerNick, player_nicks_table)
65     mapper(PlayerElo, player_elos_table)
66     mapper(PlayerRank, player_ranks_table)
67     mapper(PlayerCaptime, player_captimes_table)
68     mapper(SummaryStat, summary_stats_table)
69     mapper(TeamGameStat, team_game_stats_table)
70     mapper(PlayerGameAnticheat, player_game_anticheats_table)
71     mapper(PlayerGroups, player_groups_table)
72     mapper(ActivePlayer, active_players_table)
73     mapper(ActiveServer, active_servers_table)
74     mapper(ActiveMap, active_maps_table)
75     mapper(PlayerMedal, player_medals_table)