]> de.git.xonotic.org Git - xonotic/xonstat.git/blob - xonstat/models.py
8046279e5a3d04d2bf219dfcb33f3c584c58544b
[xonotic/xonstat.git] / xonstat / models.py
1 import sqlalchemy
2 from sqlalchemy.orm import mapper
3 from sqlalchemy.orm import scoped_session
4 from sqlalchemy.orm import sessionmaker
5 from sqlalchemy.ext.declarative import declarative_base
6
7 DBSession = scoped_session(sessionmaker())
8 Base = declarative_base()
9
10 # define objects for all tables
11 class Player(object):
12     def __repr__(self):
13         return "<Player(%s, %s, %s, %s)>" % (self.player_id, self.nick, 
14                 self.create_dt, self.location)
15
16
17 class Mutator(object):
18     def __repr__(self):
19         return "<Mutator(%s, %s, %s, %s)>" % (self.mutator_cd, self.name, 
20                 self.descr, self.active_ind)
21
22
23 class GameType(object):
24     def __repr__(self):
25         return "<GameType(%s, %s, %s)>" % (self.game_type_cd, self.descr, 
26                 self.active_ind)
27
28
29 class Weapon(object):
30     def __repr__(self):
31         return "<Weapon(%s, %s, %s)>" % (self.weapon_cd, self.descr, 
32                 self.active_ind)
33
34
35 class Server(object):
36     def __init__(self, name=None):
37         self.name = name
38
39     def __repr__(self):
40         return "<Server(%s, %s, %s)>" % (self.server_id, self.name, 
41                 self.ip_addr)
42
43
44 class Map(object):
45     def __init__(self, name=None):
46         self.name = name
47
48     def __repr__(self):
49         return "<Map(%s, %s, %s)>" % (self.map_id, self.name, self.version)
50
51
52 class MapGameType(object):
53     def __repr__(self):
54         return "<MapGameType(%s, %s)>" % (self.map_id, self.game_type_cd)
55
56
57 class Game(object):
58     def __init__(self, start_dt=None, game_type_cd=None, 
59             server_id=None, map_id=None, winner=None):
60         self.start_dt = start_dt
61         self.game_type_cd = game_type_cd
62         self.server_id = server_id
63         self.map_id = map_id
64         self.winner = winner
65
66     def __repr__(self):
67         return "<Game(%s, %s, %s, %s)>" % (self.game_id, self.start_dt, 
68                 self.game_type_cd, self.server_id)
69
70
71 class PlayerGameStat(object):
72     def __init__(self, create_dt=None):
73         self.create_dt = create_dt
74
75     def __repr__(self):
76         return "<PlayerGameStat(%s, %s, %s, %s)>" \
77         % (self.player_id, self.game_id, self.create_dt, self.stat_type)
78
79
80 class GameMutator(object):
81     def __repr__(self):
82         return "<GameMutator(%s, %s)>" % (self.game_id, self.mutator_cd)
83
84 class Achievement(object):
85     def __repr__(self):
86         return "<Achievement(%s, %s, %s)>" % (self.achievement_cd, self.descr,
87                 self.limit)
88
89
90 class PlayerAchievement(object):
91     def __repr__(self):
92         return "<PlayerAchievement(%s, %s)>" % (self.player_id, self.achievement_cd)
93
94
95 class PlayerWeaponStat(object):
96     def __repr__(self):
97         return "<PlayerWeaponStat(%s, %s, %s)>" % (self.player_weapon_stat_id,
98                 self.player_id, self.game_id)
99
100
101 class Hashkey(object):
102     def __init__(self, player_id=None, hashkey=None):
103         self.player_id = player_id
104         self.hashkey = hashkey
105
106     def __repr__(self):
107         return "<Hashkey(%s, %s)>" % (self.player_id, self.hashkey)
108
109
110 def initialize_db(engine=None):
111     DBSession.configure(bind=engine)
112     Base.metadata.bind = engine
113     Base.metadata.create_all(engine)
114     MetaData = sqlalchemy.MetaData(bind=engine, reflect=True)
115
116     # assign all those tables to an object
117     achievements_table = MetaData.tables['achievements']
118     cd_achievement_table = MetaData.tables['cd_achievement']
119     cd_game_type_table = MetaData.tables['cd_game_type']
120     cd_mutator_table = MetaData.tables['cd_mutator']
121     cd_weapon_table = MetaData.tables['cd_weapon']
122     db_version_table = MetaData.tables['db_version']
123     game_mutators_table = MetaData.tables['game_mutators']
124     games_table = MetaData.tables['games']
125     hashkeys_table = MetaData.tables['hashkeys']
126     map_game_types_table = MetaData.tables['map_game_types']
127     maps_table = MetaData.tables['maps']
128     player_game_stats_table = MetaData.tables['player_game_stats']
129     players_table = MetaData.tables['players']
130     player_weapon_stats_table = MetaData.tables['player_weapon_stats']
131     servers_table = MetaData.tables['servers']
132
133     # now map the tables and the objects together
134     mapper(PlayerAchievement, achievements_table)
135     mapper(Achievement, cd_achievement_table)
136     mapper(GameType, cd_game_type_table)
137     mapper(Mutator, cd_mutator_table)
138     mapper(Weapon, cd_weapon_table)
139     mapper(GameMutator, game_mutators_table)
140     mapper(Game, games_table)
141     mapper(Hashkey, hashkeys_table)
142     mapper(MapGameType, map_game_types_table)
143     mapper(Map, maps_table)
144     mapper(PlayerGameStat, player_game_stats_table)
145     mapper(Player, players_table)
146     mapper(PlayerWeaponStat, player_weapon_stats_table)
147     mapper(Server, servers_table)