Example #1
0
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    characters = db.relationship('PlayerCharacter',
                                 backref='player',
                                 lazy='dynamic')
    campaigns = db.relationship('Campaign', backref='player', lazy='dynamic')

    def __repr__(self):
        return '<User {}>'.format(self.username)
Example #2
0
class NPC(db.Model):
    __tablename__ = 'npc'
    id = db.Column(db.Integer, primary_key=True)
    npcname = db.Column(db.String(64),
                        index=True,
                        unique=True,
                        primary_key=True)
    displayname = db.Column(db.String(64), index=True)
    imageurl = db.Column(db.String(128))

    def __repr__(self):
        return '<NPC Name{}, DisplayName{}>'.format(self.npcname,
                                                    self.displayname)
Example #3
0
class Weapon(db.Model):
    __tablename__ = 'weapon'
    id = db.Column(db.Integer, primary_key=True)
    weaponname = db.Column(db.String(64),
                           index=True,
                           unique=True,
                           primary_key=True)

    def __repr__(self):
        return '<Weapon Name{}>'.format(self.weaponname)
Example #4
0
class PlayerCharacter(db.Model):
    __tablename__ = 'playercharacter'
    id = db.Column(db.Integer, primary_key=True)
    charactername = db.Column(db.String(64), index=True, unique=True)
    stats = db.relationship('Stat', backref='accolade', lazy='dynamic')
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    campaign_id = db.Column(db.Integer, db.ForeignKey('campaign.id'))

    def __repr__(self):
        return '<PC {}>'.format(self.charactername)
Example #5
0
class Spell(db.Model):
    __tablename__ = 'spell'
    id = db.Column(db.Integer, primary_key=True)
    spellname = db.Column(db.String(64),
                          index=True,
                          unique=True,
                          primary_key=True)
    spelllevel = db.Column(db.Integer(), index=True)

    def __repr__(self):
        return '<Spell Name{}, DisplayName{}>'.format(self.npcname,
                                                      self.displayname)
Example #6
0
class AttackType(db.Model):
    __tablename__ = 'attacktype'
    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.String(64))

    def __repr__(self):
        return '<AttackType Name{}>'.format(self.weaponname)

    __mapper_args__ = {
        'polymorphic_identity': 'attacktype',
        'polymorphic_on': type,
        'with_polymorphic': '*'
    }
Example #7
0
class Campaign(db.Model):
    __tablename__ = 'campaign'
    id = db.Column(db.Integer, primary_key=True)
    campaignname = db.Column(db.String(64), index=True, unique=True)
    dungeonmaster = db.Column(db.Integer, db.ForeignKey('user.id'))
    players = db.relationship('User', backref='players', lazy='dynamic')
    playercharacters = db.relationship('PlayerCharacter',
                                       backref='characters',
                                       lazy='dynamic')
    stats = db.relationship('Stat', backref='stat', lazy='dynamic')

    def __repr__(self):
        return '<Campaign {}>'.format(self.campaignname)
Example #8
0
class SpellUsed(db.Model):
    __tablename__ = 'spellused'
    id = db.Column(db.Integer, ForeignKey('stat.id'), primary_key=True)
    spell_id = db.Column(db.Integer, ForeignKey('spell.id'))
    description = db.Column(db.String(500))

    def __repr__(self):
        return '<Stat Spell{}, Description{}>'.format(self.spell_id,
                                                      self.description)

    __mapper_args__ = {
        'polymorphic_identity': 'spellused',
        'polymorphic_load': 'inline'
    }
Example #9
0
class NPCKilled(db.Model):
    __tablename__ = 'npckilled'
    id = db.Column(db.Integer, ForeignKey('stat.id'), primary_key=True)
    npc_id = db.Column(db.Integer, db.ForeignKey('npc.id'))
    description = db.Column(db.String(500))

    def __repr__(self):
        return '<Stat NPC{}, Description{}>'.format(self.npc_id,
                                                    self.description)

    __mapper_args__ = {
        'polymorphic_identity': 'npckilled',
        'polymorphic_load': 'inline'
    }
Example #10
0
class Stat(db.Model):
    __tablename__ = 'stat'
    id = db.Column(db.Integer, primary_key=True)
    timestamp = db.Column(db.DateTime,
                          index=True,
                          default=datetime.datetime.utcnow())
    session = db.Column(db.Integer, index=True)
    type = db.Column(db.String(64))
    playercharacter_id = db.Column(db.Integer,
                                   db.ForeignKey('playercharacter.id'))
    campaign_id = db.Column(db.Integer, db.ForeignKey('campaign.id'))

    def __repr__(self):
        return '<Stat Datetime{}, session{}>'.format(self.timestamp,
                                                     self.session)

    __mapper_args__ = {
        'polymorphic_identity': 'stat',
        'polymorphic_on': type,
        'with_polymorphic': '*'
    }