1 from sqlalchemy import MetaData
2 from sqlalchemy.ext.declarative import declarative_base
3 from sqlalchemy.orm import scoped_session, sessionmaker, mapper
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 *
11 DBSession = scoped_session(sessionmaker())
12 Base = declarative_base()
15 def initialize_db(engine=None):
16 DBSession.configure(bind=engine)
18 Base.metadata.bind = engine
19 Base.metadata.create_all(engine)
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)
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']
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)