Example #1
0
class User(db.Model, UserMixin):
    __tablename__ = "user"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(25), unique=True, nullable=False)

    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)

    win = db.Column(db.Integer, unique=False, nullable=True, default=0)
    loss = db.Column(db.Integer, unique=False, nullable=True, default=0)
    tie = db.Column(db.Integer, unique=False, nullable=True, default=0)

    monsters = db.relationship("Monster",
                               secondary=deck_monster,
                               back_populates="users",
                               lazy=True)
    monster_effects = db.relationship("MonsterEffect",
                                      secondary=deck_monster_effect,
                                      back_populates="users",
                                      lazy=True)
    equipment = db.relationship("Equipment",
                                secondary=deck_equipment,
                                back_populates="users",
                                lazy=True)
    boards = db.relationship("Board")

    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.password = password

    def __repr__(self):
        return (f"User('{self.username}'), ID: {self.id}")
Example #2
0
class Monster(db.Model):
    __tablename__ = "monster"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    name = db.Column(db.String(25), unique=True, nullable=False)

    attack_points = db.Column(db.Integer, nullable=True, default=0)
    defense_points = db.Column(db.Integer, nullable=True, default=0)

    types = db.relationship("Type",
                            secondary=monster_type,
                            back_populates="monsters",
                            lazy=True)
    archetypes = db.relationship("Archetype",
                                 secondary=monster_archetype,
                                 back_populates="monsters",
                                 lazy=True)
    users = db.relationship("User",
                            secondary=deck_monster,
                            back_populates="monsters",
                            lazy=True)

    def __init__(self, name, attack_points, defense_points):
        self.name = name
        self.attack_points = attack_points
        self.defense_points = defense_points

    def __repr__(self):
        return (f"Monster('{self.name}', Attack: {self.attack_points}, "
                f"Defense: '{self.defense_points}', ID: '{self.id}')")
Example #3
0
class Equipment(db.Model):
    __tablename__ = "equipment"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(25), unique=False, nullable=False)

    #   SQLAlchemy supports JSON as a data type in a column
    #   However: adding using our current admin panel would be annoying,
    #   because users would have to write in JSON format.
    #   We need to modify the Update operator for this specific class
    #   if we want probabilistic modification of monster attributes.
    attack = db.Column(db.Integer, unique=False, nullable=False)
    defense = db.Column(db.Integer, unique=False, nullable=False)

    types = db.relationship("Type",
                            secondary=equipment_type,
                            back_populates="equipment",
                            lazy=True)
    archetypes = db.relationship("Archetype",
                                 secondary=equipment_archetype,
                                 back_populates="equipment",
                                 lazy=True)
    users = db.relationship("User",
                            secondary=deck_equipment,
                            back_populates="equipment",
                            lazy=True)

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return (f"Equipment('{self.name}'), Attack: {self.attack_points}, "
                f"Defense: '{self.defense_points}')")
Example #4
0
class Type(db.Model):
    __tablename__ = "type"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(25), unique=False, nullable=False)

    monsters = db.relationship("Monster",
                               secondary=monster_type,
                               back_populates="types",
                               lazy=True)
    equipment = db.relationship("Equipment",
                                secondary=equipment_type,
                                back_populates="types",
                                lazy=True)
    monster_effects = db.relationship("MonsterEffect",
                                      secondary=monster_effect_type,
                                      back_populates="types",
                                      lazy=True)

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return f"Type('{self.name}')"