class Cards(db.Model): __tablename__ = 'cards' card_id = db.Column(db.Integer, primary_key = True) name = db.Column(db.String, unique = True) mana_cost = db.Column(db.String) img_url = db.Column(db.String) colors_ref = db.relationship('Colors', secondary = card_colors_relationship, backref = db.backref('colorcards', lazy = 'dynamic')) types_ref = db.relationship('Types', secondary = card_types_relationship, backref = db.backref('typecards', lazy = 'dynamic')) subtypes_ref = db.relationship('Subtypes', secondary = card_subtypes_relationship, backref = db.backref('subtypescards', lazy = 'dynamic')) text = db.Column(db.String) def __init__(self,name, mana_cost,img_url,text): self.name = name self.mana_cost = mana_cost self.img_url = img_url self.text = text def __repr__(self): return json.dumps(dict(card_id = self.card_id, name = self.name, mana_cost = self.mana_cost, img_url = self.img_url, text = self.text))
class Types(db.Model): __tablename__ = 'types' id = db.Column(db.Integer, primary_key = True) types = db.Column(db.String, unique = True) def __init__(self, types): self.types = types def __repr__(self): return self.types
class Subtypes(db.Model): __tablename__ = 'subtypes' id = db.Column(db.Integer, primary_key = True) subtype = db.Column(db.String, unique = True) def __init__(self, subtype): self.subtype = subtype def __repr__(self): return self.subtype
class Colors(db.Model): __tablename__ = 'colors' id = db.Column(db.Integer, primary_key = True) color = db.Column(db.String, unique = True) def __init__(self, color): self.color = color def __repr__(self): return self.color
class Users(db.Model): __tablename__ = 'users' user_id = db.Column(db.Integer, primary_key = True) username = db.Column(db.String, unique = True) email = db.Column(db.String, unique = True) user_cards = db.relationship('Cards', secondary = card_decks_relationship, backref = db.backref('owner', lazy = 'dynamic')) my_clan = db.Column(db.Integer, db.ForeignKey('clans.clan_id')) def __init__(self,username,email): self.username = username self.email = email def __repr__(self): return json.dumps(dict(username = self.username, email = self.email))
class Clans(db.Model): __tablename__ = 'clans' clan_id = db.Column(db.Integer, primary_key = True) clan_name = db.Column(db.String, unique = True) user_ref = db.relationship('Users', backref = db.backref('myclan')) def __init__(self,clan_name): self.clan_name = clan_name def __repr__(self): return json.dumps(dict(clan = self.clan_name)) # ONE CARD CAN HAVE MANY USERS # ONE USER CAN HAVE MANY CARDS BUT ONE CLAN # ONE CLAN CAN HAVE MANY USERS
class User(db.Model): __tablename__ = 'person' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), index=True, unique=True) email = db.Column(db.String(120), index=True, unique=True) secure = db.Column(db.String(140), index=True, unique=True) # magic url created = db.Column(db.DateTime, index=True, default=datetime.utcnow) counter = db.Column(db.Integer, default=0) def __repr__(self): return f'<User {self.username}>' @property def full_link(self): if self.secure: return f'{app.config["HOSTNAME"]}/magic/api/v1.0/magic/{self.secure}' # Custom User Payload def get_security_payload(self): return { 'id': self.id, 'name': self.username, 'email': self.email, 'code': self.secure, 'counter': self.counter, 'url': self.full_link, }
class Admin(db.Model, UserMixin): __tablename__ = 'admins' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) email = db.Column(db.String(100), nullable=False) role = db.Column(db.String(100), nullable=False) password = db.Column(db.String(100), nullable=False) thumbnail = db.Column(db.String(100), nullable=False, default="defaultimg.jpg") def get_reset_token(self, expires_sec=1800): s = Serializer(current_app.config['SECRET_KEY'], expires_sec) return s.dumps({'user_id': self.id}).decode('utf-8') @staticmethod def verify_reset_token(token): s = Serializer(current_app.config['SECRET_KEY']) try: user_id = s.loads(token)['user_id'] except: return None return Admin.query.get(user_id) def __repr__(self): return f"Admin('{self.name}','{self.email}', '{self.thumbnail}')"
class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) short_desc = db.Column(db.String(500), nullable=True) vid = db.Column(db.String(500), nullable=False, default='defaultvid.mp4') post_date = db.Column(db.String(300), nullable=False, default=datetime.utcnow) thumbnail = db.Column(db.String(500), nullable=False, default='defaultimg.jpg') cat_id = db.Column(db.Integer, db.ForeignKey('categories.id'), nullable=False) featured = db.Column(db.Boolean, unique=False, default=True) category = db.relationship('Category', backref='cat_posts', foreign_keys=[cat_id])
from magic import db from flask import json # RELATIONAL TABLES card_decks_relationship = db.Table('decks_relationship', db.Column('user_id', db.Integer, db.ForeignKey('users.user_id')), db.Column('card_id', db.Integer, db.ForeignKey('cards.card_id')) ) card_colors_relationship = db.Table('colors_relationship', db.Column('id', db.Integer, db.ForeignKey('colors.id')), db.Column('card_id', db.Integer, db.ForeignKey('cards.card_id')) ) card_types_relationship = db.Table('types_relationship', db.Column('id', db.Integer, db.ForeignKey('types.id')), db.Column('card_id', db.Integer, db.ForeignKey('cards.card_id')) ) card_subtypes_relationship = db.Table('subtypes_relationship', db.Column('id', db.Integer, db.ForeignKey('subtypes.id')), db.Column('card_id', db.Integer, db.ForeignKey('cards.card_id')) ) # TABLES FOR CARDS class Colors(db.Model):
class Category(db.Model): __tablename__ = 'categories' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), unique=True, nullable=False) description = db.Column(db.String(1000), nullable=True) posts = db.relationship('Post', backref='categories', lazy=True)