7 from sqlalchemy import Column
8 from sqlalchemy import Integer
9 from sqlalchemy import Unicode
11 from sqlalchemy.exc import IntegrityError
12 from sqlalchemy.ext.declarative import declarative_base
14 from sqlalchemy.orm import mapper
15 from sqlalchemy.orm import scoped_session
16 from sqlalchemy.orm import sessionmaker
18 Engine=sqlahelper.get_engine()
19 DBSession = scoped_session(sessionmaker())
20 Base = declarative_base()
23 log = logging.getLogger(__name__)
25 # reflect all the tables
26 MetaData = sqlalchemy.MetaData(bind=Engine, reflect=True)
28 # assign all those tables to an object
29 achievements_table = MetaData.tables['achievements']
30 cd_achievement_table = MetaData.tables['cd_achievement']
31 cd_game_type_table = MetaData.tables['cd_game_type']
32 cd_mutator_table = MetaData.tables['cd_mutator']
33 cd_weapon_table = MetaData.tables['cd_weapon']
34 db_version_table = MetaData.tables['db_version']
35 game_mutators_table = MetaData.tables['game_mutators']
36 games_table = MetaData.tables['games']
37 hashkeys_table = MetaData.tables['hashkeys']
38 map_game_types_table = MetaData.tables['map_game_types']
39 maps_table = MetaData.tables['maps']
40 player_game_stats_table = MetaData.tables['player_game_stats']
41 players_table = MetaData.tables['players']
42 player_weapon_stats_table = MetaData.tables['player_weapon_stats']
43 servers_table = MetaData.tables['servers']
45 # define objects for all tables
47 def __init__(self, player_id=None, nick=None, create_dt=datetime.datetime.now(),
49 self.player_id = player_id
51 self.create_dt = create_dt
52 self.location = location
55 return "<Player(%s, %s, %s, %s)>" % (self.player_id, self.nick,
56 self.create_dt, self.location)
58 class Mutator(object):
59 def __init__(self, mutator_cd, name=None, descr=None, active_ind='Y'):
60 self.mutator_cd = mutator_cd
63 self.active_ind = active_ind
66 return "<Mutator(%s, %s, %s, %s)>" % (self.mutator_cd, self.name,
67 self.descr, self.active_ind)
69 class GameType(object):
70 def __init__(self, game_type_cd, descr=None, active_ind='Y'):
71 self.game_type_cd = game_type_cd
73 self.active_ind = active_ind
76 return "<GameType(%s, %s, %s)>" % (self.game_type_cd, self.descr,
80 def __init__(self, weapon_cd=None, descr=None, active_ind='Y'):
81 self.weapon_cd = weapon_cd
83 self.active_ind = active_ind
86 return "<Weapon(%s, %s, %s)>" % (self.weapon_cd, self.descr,
90 def __init__(self, server_id=None, name=None, location=None, ip_addr=None,
91 max_players=None, create_dt=datetime.datetime.now(),
92 pure_ind='Y', active_ind='Y'):
93 self.server_id = server_id
95 self.location = location
96 self.ip_addr = ip_addr
97 self.max_players = max_players
98 self.create_dt = create_dt
99 self.pure_ind = pure_ind
100 self.active_ind = active_ind
103 return "<Server(%s, %s, %s)>" % (self.server_id, self.name,
107 def __init__(self, map_id=None, name=None, version=None, pk3_name=None,
111 self.version = version
112 self.pk3_name = pk3_name
113 self.curl_url = curl_url
116 return "<Map(%s, %s, %s)>" % (self.map_id, self.name, self.version)
118 class MapGameType(object):
119 def __init__(self, map_id=None, game_type_cd=None):
121 self.game_type_cd = game_type_cd
124 return "<MapGameType(%s, %s)>" % (self.map_id, self.game_type_cd)
127 def __init__(self, game_id=None, start_dt=datetime.datetime.now(),
128 game_type_cd=None, server_id=None, map_id=None, duration=None,
129 winner=None, create_dt=datetime.datetime.now()):
130 self.game_id = game_id
131 self.start_dt = start_dt
132 self.game_type_cd = game_type_cd
133 self.server_id = server_id
135 self.duration = duration
137 self.create_dt = create_dt
140 return "<Game(%s, %s, %s, %s)>" % (self.game_id, self.start_dt,
141 self.game_type_cd, self.server_id)
143 class PlayerGameStat(object):
144 def __init__(self, player_id=None, game_id=None, create_dt=None,
145 stat_type=None, team=None, kills=None, deaths=None, suicides=None,
146 score=None, time=None, held=None, captures=None, pickups=None,
147 carrier_frags=None, drops=None, returns=None, collects=None,
148 destroys=None, destroys_holding_key=None, pushes=None,
149 pushed=None, nick=None):
150 self.player_id = player_id
151 self.game_id = game_id
152 self.create_dt = create_dt
153 self.stat_type = stat_type
158 self.suicides = suicides
162 self.captures = captures
163 self.pickups = pickups
164 self.carrier_frags = carrier_frags
166 self.returns = returns
167 self.collects = collects
168 self.destroys = destroys
169 self.destroys_holding_key = destroys_holding_key
174 return "<PlayerGameStat(%s, %s, %s, %s)>" \
175 % (self.player_id, self.game_id, self.create_dt, self.stat_type)
177 class GameMutator(object):
178 def __init__(self, game_id=None, mutator_cd=None):
179 self.game_id = game_id
180 self.mutator_cd = mutator_cd
183 return "<GameMutator(%s, %s)>" % (self.game_id, self.mutator_cd)
185 class Achievement(object):
186 def __init__(self, achievement_cd=None, descr=None, limit=None, active_ind='Y'):
187 self.achievement_cd = achievement_cd
190 self.active_ind = active_ind
193 return "<Achievement(%s, %s, %s)>" % (self.achievement_cd, self.descr, self.limit)
195 class PlayerAchievement(object):
196 def __init__(self, achievement_id=None, achievement_cd=None,
197 player_id=None, create_dt=datetime.datetime.now()):
198 self.achievement_id = achievement_id
199 self.achievement_cd = achievement_cd
200 self.player_id = player_id
201 self.create_dt = create_dt
204 return "<PlayerAchievement(%s, %s)>" % (self.player_id, self.achievement_cd)
206 class PlayerWeaponStat(object):
207 def __init__(self, player_weapon_stat_id=None,
208 create_dt=datetime.datetime.now(), player_id=None,
209 game_id=None, weapon_cd=None, actual=None, max=None, frags=None):
210 self.player_weapon_stat_id = player_weapon_stat_id
211 self.create_dt = create_dt
212 self.player_id = player_id
213 self.game_id = game_id
214 self.weapon_cd = weapon_cd
220 return "<PlayerWeaponStat(%s, %s, %s)>" % (self.player_weapon_stat_id,
221 self.player_id, self.game_id)
223 class Hashkey(object):
224 def __init__(self, player_id=None, hashkey=None, active_ind='Y',
225 create_dt=datetime.datetime.now()):
226 self.player_id = player_id
227 self.hashkey = hashkey
228 self.active_ind = active_ind
231 return "<Hashkey(%s, %s)>" % (self.player_id, self.hashkey)
233 # now map the tables and the objects together
234 mapper(PlayerAchievement, achievements_table)
235 mapper(Achievement, cd_achievement_table)
236 mapper(GameType, cd_game_type_table)
237 mapper(Mutator, cd_mutator_table)
238 mapper(Weapon, cd_weapon_table)
239 mapper(GameMutator, game_mutators_table)
240 mapper(Game, games_table)
241 mapper(Hashkey, hashkeys_table)
242 mapper(MapGameType, map_game_types_table)
243 mapper(Map, maps_table)
244 mapper(PlayerGameStat, player_game_stats_table)
245 mapper(Player, players_table)
246 mapper(PlayerWeaponStat, player_weapon_stats_table)
247 mapper(Server, servers_table)
249 def initialize_sql(engine):
250 DBSession.configure(bind=engine)
251 Base.metadata.bind = engine
252 Base.metadata.create_all(engine)