class User(db.Model): id = db.Column(db.Integer, primary_key=True) steam_id = db.Column(db.String(40), unique=True) name = db.Column(db.String(40)) class GameServer(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) display_name = db.Column(db.String(32), default='') ip_string = db.Column(db.String(32)) port = db.Column(db.Integer) public_server = db.Column(db.Boolean, default=False, index=True) class Team(db.Model): MAXPLAYERS = 5 id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) name = db.Column(db.String(40)) steam_id = db.Column(db.String(40), unique=True) class Match(db.Model): id = db.Column(db.Integer, primary_key=True) server_id = db.Column(db.Integer, db.ForeignKey('game_server.id'), index=True) team1_id = db.Column(db.Integer, db.ForeignKey('team.id')) team2_id = db.Column(db.Integer, db.ForeignKey('team.id')) winner = db.Column(db.Integer, db.ForeignKey('team.id')) class MapStats(db.Model): id = db.Column(db.Integer, primary_key=True) match_id = db.Column(db.Integer, db.ForeignKey('match.id')) map_number = db.Column(db.Integer) map_name = db.Column(db.String(64)) start_time = db.Column(db.DateTime) end_time = db.Column(db.DateTime) winner = db.Column(db.Integer, db.ForeignKey('team.id')) team1_score = db.Column(db.Integer, default=0) team2_score = db.Column(db.Integer, default=0) player_stats = db.relationship( 'PlayerStats', backref='mapstats', lazy='dynamic') class PlayerStats(db.Model): id = db.Column(db.Integer, primary_key=True) match_id = db.Column(db.Integer, db.ForeignKey('match.id')) map_id = db.Column(db.Integer, db.ForeignKey('map_stats.id')) team_id = db.Column(db.Integer, db.ForeignKey('team.id')) steam_id = db.Column(db.String(40)) name = db.Column(db.String(40)) kills = db.Column(db.Integer, default=0) deaths = db.Column(db.Integer, default=0) roundsplayed = db.Column(db.Integer, default=0) assists = db.Column(db.Integer, default=0) flashbang_assists = db.Column(db.Integer, default=0) teamkills = db.Column(db.Integer, default=0) suicides = db.Column(db.Integer, default=0) headshot_kills = db.Column(db.Integer, default=0) damage = db.Column(db.Integer, default=0) bomb_plants = db.Column(db.Integer, default=0) bomb_defuses = db.Column(db.Integer, default=0) v1 = db.Column(db.Integer, default=0) v2 = db.Column(db.Integer, default=0) v3 = db.Column(db.Integer, default=0) v4 = db.Column(db.Integer, default=0) v5 = db.Column(db.Integer, default=0) k1 = db.Column(db.Integer, default=0) k2 = db.Column(db.Integer, default=0) k3 = db.Column(db.Integer, default=0) k4 = db.Column(db.Integer, default=0) k5 = db.Column(db.Integer, default=0) firstkill_t = db.Column(db.Integer, default=0) firstkill_ct = db.Column(db.Integer, default=0) firstdeath_t = db.Column(db.Integer, default=0) firstdeath_Ct = db.Column(db.Integer, default=0)