class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(24), unique=True, nullable=False) nickname = db.Column(db.String(24)) location = db.Column(db.String) password = db.Column(db.String(160), nullable=False) recovery_token = db.Column(db.String(160)) email = db.Column(db.String(64), nullable=False) notes = db.Column(db.Text) coins = db.Column(db.Integer) stardust = db.Column(db.Integer) buddy_pokemon_id = db.Column(db.Integer, db.ForeignKey('user_pokemon.id')) bag_size = db.Column(db.Integer) pokemon_storage_size = db.Column(db.Integer) team_id = db.Column(db.Integer, db.ForeignKey('team.id')) created = db.Column(db.TIMESTAMP(timezone=True), server_default=db.func.now()) last_modified = db.Column(db.TIMESTAMP(timezone=True), onupdate=db.func.now()) pokemon = db.relationship('UserPokemon', primaryjoin='User.id==UserPokemon.user_id') team = db.relationship('Team') def __repr__(self): return repr_gen(self, ['username', 'nickname', 'location', 'email', 'notes', 'coins', 'stardust', 'buddy_pokemon_id', 'bag_size', 'pokemon_storage_size', 'team_id', 'created', 'last_modified'])
class Item(ContentModel): section_id = db.Column(db.Integer, db.ForeignKey('section.id')) created_by = db.Column(db.Integer, db.ForeignKey('user.id')) modified_by = db.Column(db.Integer, db.ForeignKey('user.id')) restaurant_id = db.Column(db.Integer, db.ForeignKey('restaurant.id')) image_url = db.Column(db.String(140)) price = db.Column(db.Float, nullable=False) def __repr__(self): return '<Item {}>'.format(self.title) @classmethod def find_by_section_id(cls, section_id): result = cls.query.filter(cls.section_id == section_id) if result.count() > 0: return result return [] def serializable(self): return { 'id': self.id, 'title': self.title, 'price': self.price, 'image_url': self.image_url }
class Comment(SurrogatePK, Model, ModelSerializer): """Comment model""" __tablename__ = 'comment' id = db.Column(db.Integer, primary_key=True, autoincrement=True) uuid = db.Column(db.String) text = db.Column(db.String) user_uuid = db.Column(db.Integer, db.ForeignKey('users.id'), index=True) location_uuid = db.Column(db.Integer, db.ForeignKey('hammock_location.id'), index=True) date_created = db.Column(db.DateTime, default=datetime.datetime.utcnow) def __init__(self, text=None, user_uuid=None, location_uuid=None): """Define what will be loaded up on model instantiation here""" self.uuid = gen_uuid() self.text = text self.user_uuid = user_uuid self.location_uuid = location_uuid def __repr__(self): return '<Comment {}:{}>'.format(self.uuid, self.text)
class UserLike(db.Model): __tablename__ = 'user_like' like_id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.user_id')) comment_id = db.Column(db.Integer, db.ForeignKey('community_comments.comment_id')) like_value = db.Column(db.Integer)
class PokemonAttack(db.Model): __tablename__ = 'pokemon_attack' pokemon_id = db.Column(db.Integer, db.ForeignKey('pokemon.id'), primary_key=True) attack_id = db.Column(db.Integer, db.ForeignKey('attack.id'), primary_key=True) def __repr__(self): return repr_gen(self, ['pokemon_id', 'attack_id'])
class Evaluation(db.Model): __tablename__ = 'evaluations' evaluation_id = db.Column(db.Integer, primary_key=True) comprehension_rating = db.Column(db.Integer) quality_rating = db.Column(db.Integer) user_id = db.Column(db.Integer, db.ForeignKey('users.user_id')) graph_ref = db.Column(db.String(100), db.ForeignKey('documents.graph_ref'))
class PokemonEgg(db.Model): __tablename__ = 'pokemon_egg' pokemon_id = db.Column(db.Integer, db.ForeignKey('pokemon.id'), primary_key=True) egg_id = db.Column(db.Integer, db.ForeignKey('egg.id'), primary_key=True) def __repr__(self): return repr_gen(self, ['pokemon_id', 'egg_id'])
class UserPokemonAppraisalIv(db.Model): __tablename__ = 'user_pokemon_appraisal_iv' user_pokemon_id = db.Column(db.Integer, db.ForeignKey('user_pokemon.id'), primary_key=True) appraisal_iv_id = db.Column(db.Integer, db.ForeignKey('appraisal_iv.id'), primary_key=True) def __repr__(self): return repr_gen(self, ['user_pokemon_id', 'appraisal_iv_id'])
class PokemonType(db.Model): __tablename__ = 'pokemon_type' pokemon_id = db.Column(db.Integer, db.ForeignKey('pokemon.id'), primary_key=True) type_id = db.Column(db.Integer, db.ForeignKey('type.id'), primary_key=True) def __repr__(self): return repr_gen(self, ['pokemon_id', 'type_id'])
class PokemonEvolution(db.Model): __tablename__ = 'pokemon_evolution' from_pokemon_id = db.Column(db.Integer, db.ForeignKey('pokemon.id'), primary_key=True) to_pokemon_id = db.Column(db.Integer, db.ForeignKey('pokemon.id'), primary_key=True) candy = db.Column(db.Integer, nullable=False) def __repr__(self): return repr_gen(self, ['from_pokemon_id', 'to_pokemon_id', 'candy'])
class UserItem(db.Model): __tablename__ = 'user_item' user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True) item_id = db.Column(db.Integer, db.ForeignKey('item.id'), primary_key=True) count = db.Column(db.Integer, nullable=False) def __repr__(self): return repr_gen(self, ['user_id', 'item_id', 'count'])
class UserCandy(db.Model): __tablename__ = 'user_candy' user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True) pokemon_id = db.Column(db.Integer, db.ForeignKey('pokemon.id'), primary_key=True) count = db.Column(db.Integer) def __repr__(self): return repr_gen(self, ['user_id', 'pokemon_id', 'count'])
class UserEgg(db.Model): __tablename__ = 'user_egg' user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True) egg_id = db.Column(db.Integer, db.ForeignKey('egg.id'), primary_key=True) count = db.Column(db.Integer) def __repr__(self): return repr_gen(self, ['user_id', 'egg_id'])
class TypeEffectiveness(db.Model): __tablename__ = 'type_effectiveness' from_type_id = db.Column(db.Integer, db.ForeignKey('type.id'), primary_key=True) to_type_id = db.Column(db.Integer, db.ForeignKey('type.id'), primary_key=True) effectiveness_id = db.Column(db.Integer, db.ForeignKey('effectiveness.id'), primary_key=True) def __repr__(self): return repr_gen(self, ['from_type_id', 'to_type_id', 'effectiveness_id'])
class MedalLevelRequirement(db.Model): __tablename__ = 'medal_level_requirement' medal_id = db.Column(db.Integer, db.ForeignKey('medal.id'), primary_key=True) medal_level_id = db.Column(db.Integer, db.ForeignKey('medal_level.id'), primary_key=True) count = db.Column(db.Integer, nullable=False) def __repr__(self): return repr_gen(self, ['medal_id', 'medal_level_id', 'count'])
class TeamAppraisalSize(db.Model): __tablename__ = 'team_appraisal_size' team_id = db.Column(db.Integer, db.ForeignKey('team.id'), primary_key=True) appraisal_size_id = db.Column(db.Integer, db.ForeignKey('appraisal_size.id'), primary_key=True) dialog = db.Column(db.Text, nullable=False) def __repr__(self): return repr_gen(self, ['team_id', 'appraisal_size_id', 'dialog'])
class UserMedal(db.Model): __tablename__ = 'user_medal' user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True) medal_id = db.Column(db.Integer, db.ForeignKey('medal.id'), primary_key=True) medal_level_id = db.Column(db.Integer, db.ForeignKey('medal_level.id'), nullable=False) count = db.Column(db.Integer, nullable=False) def __repr__(self): return repr_gen(self, ['user_id', 'medal_id', 'medal_level_id', 'count'])
class StationeryRequisitionDetails(db.Model): __tablename__ = "stationery_requisition_details" id = db.Column(db.Integer, primary_key=True, nullable=False) order_id = db.Column(db.Integer, db.ForeignKey("stationery_requisitions.id")) item = db.Column(db.Integer, db.ForeignKey("stationery.id")) quantity = db.Column(db.Float, nullable=False) purpose = db.Column(db.String, nullable=True)
class StationeryRequisition(db.Model): __tablename__ = "stationery_requisitions" id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) order_date = db.Column(db.DateTime, nullable=False) authorized_by = db.Column(db.ForeignKey("users.id"), nullable=False) approved_by = db.Column(db.ForeignKey("users.id"), nullable=False) issued_by = db.Column(db.ForeignKey("users.id"), nullable=False)
class CommunityComment(db.Model): __tablename__ = 'community_comments' comment_id = db.Column(db.Integer, primary_key=True) comment = db.Column(db.String(300), nullable=False) like_count = db.Column(db.Integer, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('users.user_id')) question_id = db.Column(db.Integer, db.ForeignKey('community_questions.question_id')) date = db.Column(db.DateTime, default=datetime.datetime.utcnow) def addLike(self, like): self.like_count += like
class Section(ContentModel): created_by = db.Column(db.Integer, db.ForeignKey('user.id')) modified_by = db.Column(db.Integer, db.ForeignKey('user.id')) restaurant_id = db.Column(db.Integer, db.ForeignKey('restaurant.id')) def __repr__(self): return '<Section {}>'.format(self.title) @classmethod def find_by_restaurant_id(cls, restaurant_id): result = cls.query.filter(cls.restaurant_id == restaurant_id) if result.count() > 0: return result return []
class Comment(Model): """ This model represents a comment on a given note """ __tablename__ = "comment" id = Column(db.Integer, primary_key=True) story_id = Column(db.String(128)) user_id = Column(db.Integer, db.ForeignKey("user.id")) content = Column(db.Integer) def __init__(self, story_id, user_id, content): self.story_id = story_id self.user_id = user_id self.content = content @classmethod def fetch_user_comments(cls, user_id): return cls.query.filter_by(user_id=user_id).all() @classmethod def fetch_post_comments(cls, post_id): return cls.query.filter_by(post_id=post_id).all() def save(self): """ Save a comment to the database. """ db.session.add(self) db.session.commit()
class PlayerStat(db.Model): __tablename__ = 'player_stats' id = db.Column(db.Integer, primary_key=True) stat_id = db.Column(db.Integer, db.ForeignKey('stats.id'), nullable=False) player_id = db.Column(db.Integer, db.ForeignKey('players.id'), nullable=False) career = db.Column(db.DECIMAL) recent = db.Column(db.DECIMAL) def __init__(self, stat_id, player_id, career, recent): self.stat_id = stat_id self.player_id = player_id self.career = career self.recent = recent
class ScholarQuestion(db.Model): __tablename__ = 'scholar_questions' question_id = db.Column(db.Integer, primary_key=True) question = db.Column(db.String(1000), nullable=False) answer = db.Column(db.String(1000)) user_id = db.Column(db.Integer, db.ForeignKey('users.user_id'))
class Pokemon(db.Model): __tablename__ = 'pokemon' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(24), unique=True, nullable=False) description = db.Column(db.Text, nullable=False) height = db.Column(db.Numeric(5, 2)) weight = db.Column(db.Numeric(5, 2)) category_id = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=False) stamina = db.Column(db.Integer, nullable=False) attack = db.Column(db.Integer, nullable=False) defense = db.Column(db.Integer, nullable=False) cp_gain = db.Column(db.Numeric(5, 2), nullable=False) cp_max = db.Column(db.Integer, nullable=False) buddy_distance = db.Column(db.Numeric(5, 2), nullable=False) fast_attacks = db.relationship('Attack', secondary='pokemon_attack', primaryjoin='and_(Pokemon.id==PokemonAttack.pokemon_id, ' 'Attack.attack_speed_id==1)') charge_attacks = db.relationship('Attack', secondary='pokemon_attack', primaryjoin='and_(Pokemon.id==PokemonAttack.pokemon_id, ' 'Attack.attack_speed_id==2)') category = db.relationship('Category') egg = db.relationship('Egg', secondary='pokemon_egg', back_populates='pokemon') evolves_to = db.relationship('Pokemon', secondary='pokemon_evolution', back_populates='evolves_from', primaryjoin='Pokemon.id==PokemonEvolution.from_pokemon_id', secondaryjoin='Pokemon.id==PokemonEvolution.to_pokemon_id') evolves_from = db.relationship('Pokemon', secondary='pokemon_evolution', back_populates='evolves_to', primaryjoin='Pokemon.id==PokemonEvolution.to_pokemon_id', secondaryjoin='Pokemon.id==PokemonEvolution.from_pokemon_id') types = db.relationship('Type', secondary='pokemon_type', back_populates='pokemon') def __repr__(self): return repr_gen(self, ['name', 'description', 'height', 'weight', 'category_id', 'stamina', 'attack', 'defense', 'cp_gain', 'cp_max', 'buddy_distance'])
class Vote(Model): """ This model holds information about a votes casted by user on stories """ __tablename__ = "vote" id = Column(db.Integer, primary_key=True) story_id = Column(db.String(128)) user_id = Column(db.Integer, db.ForeignKey("user.id")) value = Column(db.Integer) def __init__(self, story_id, user_id, value): self.story_id = story_id self.user_id = user_id self.value = value @classmethod def fetch_user_votes(cls, user_id): return cls.query.filter_by(user_id=user_id).all() def save(self): """ Save a user to the database. This includes creating a new user and editing one. """ db.session.add(self) db.session.commit()
class Attack(db.Model): __tablename__ = 'attack' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(24), unique=True, nullable=False) description = db.Column(db.Text, nullable=False) type_id = db.Column(db.Integer, db.ForeignKey('type.id'), nullable=False) power = db.Column(db.Integer, nullable=False) energy = db.Column(db.Integer, nullable=False) cooldown_time = db.Column(db.Numeric(5, 2), nullable=False) attack_speed_id = db.Column(db.Integer, db.ForeignKey('attack_speed.id'), nullable=False) pokemon = db.relationship('Pokemon', secondary='pokemon_attack', back_populates='attacks') speed = db.relationship('AttackSpeed', back_populates='attacks') type = db.relationship('Type') def __repr__(self): return repr_gen(self, ['name', 'description', 'type_id', 'power', 'energy', 'cooldown_time', 'attack_speed_id'])
class UserLog(db.Model): __tablename__ = 'user_log' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) notes = db.Column(db.Text, nullable=False) created = db.Column(db.TIMESTAMP(timezone=True), server_default=db.func.now()) last_modified = db.Column(db.TIMESTAMP(timezone=True), onupdate=db.func.now()) def __repr__(self): return repr_gen(self, ['user_id', 'notes', 'date', 'created', 'last_modified'])
class StudentClassSchedule(db.Model): """tbd""" __tablename__ = "student_class_schedule" id = db.Column(db.Integer, primary_key=True, autoincrement=True) student_id = db.Column(db.Integer, db.ForeignKey('student.id'), nullable=False) class_schedule_id = db.Column(db.Integer, db.ForeignKey('class_schedule.id'), nullable=False) # define a relationship to Student student = db.relationship("Student", backref=db.backref("student_class_schedule", order_by=id)) # define a relationship to Class Schedule class_schedule = db.relationship("ClassSchedule", backref=db.backref("student_class_schedule", order_by=id)) def __repr__(self): """Provide helpful representation when printed.""" return "<StudentClassSchedule student_id = {} class_schedule_id = {}>".format(self.student_id, self.class_schedule_id)
class Player(db.Model): __tablename__ = 'players' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(120), nullable=False) position = db.Column(db.String(30)) team_id = db.Column(db.Integer, db.ForeignKey('teams.id')) def __init__(self, name, position, team_id): self.name = name self.position = position self.team_id = team_id