Add experience tables.
[zzz-pokedex.git] / pokedex / db / tables.py
index dc2b93c..f2a31ee 100644 (file)
@@ -172,6 +172,12 @@ class EvolutionMethod(TableBase):
     name = Column(Unicode(64), nullable=False)
     description = Column(Unicode(255), nullable=False)
 
+class Experience(TableBase):
+    __tablename__ = 'experience'
+    growth_rate_id = Column(Integer, ForeignKey('growth_rates.id'), primary_key=True, nullable=False)
+    level = Column(Integer, primary_key=True, nullable=False, autoincrement=False)
+    experience = Column(Integer, nullable=False)
+
 class Generation(TableBase):
     __tablename__ = 'generations'
     id = Column(Integer, primary_key=True, nullable=False)
@@ -254,6 +260,11 @@ class Machine(TableBase):
     version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False, autoincrement=False)
     move_id = Column(Integer, ForeignKey('moves.id'), nullable=False)
 
+class MoveBattleStyle(TableBase):
+    __tablename__ = 'move_battle_styles'
+    id = Column(Integer, primary_key=True, nullable=False)
+    name = Column(Unicode(8), nullable=False)
+
 class MoveEffectCategory(TableBase):
     __tablename__ = 'move_effect_categories'
     id = Column(Integer, primary_key=True, nullable=False)
@@ -333,6 +344,26 @@ class Nature(TableBase):
     name = Column(Unicode(8), nullable=False)
     decreased_stat_id = Column(Integer, ForeignKey('stats.id'), nullable=False)
     increased_stat_id = Column(Integer, ForeignKey('stats.id'), nullable=False)
+    hates_flavor_id = Column(Integer, ForeignKey('contest_types.id'), nullable=False)
+    likes_flavor_id = Column(Integer, ForeignKey('contest_types.id'), nullable=False)
+
+class NatureBattleStylePreference(TableBase):
+    __tablename__ = 'nature_battle_style_preferences'
+    nature_id = Column(Integer, ForeignKey('natures.id'), primary_key=True, nullable=False)
+    move_battle_style_id = Column(Integer, ForeignKey('move_battle_styles.id'), primary_key=True, nullable=False)
+    low_hp_preference = Column(Integer, nullable=False)
+    high_hp_preference = Column(Integer, nullable=False)
+
+class NaturePokeathlonStat(TableBase):
+    __tablename__ = 'nature_pokeathlon_stats'
+    nature_id = Column(Integer, ForeignKey('natures.id'), primary_key=True, nullable=False)
+    pokeathlon_stat_id = Column(Integer, ForeignKey('pokeathlon_stats.id'), primary_key=True, nullable=False)
+    max_change = Column(Integer, nullable=False)
+
+class PokeathlonStat(TableBase):
+    __tablename__ = 'pokeathlon_stats'
+    id = Column(Integer, primary_key=True, nullable=False)
+    name = Column(Unicode(8), nullable=False)
 
 class Pokedex(TableBase):
     __tablename__ = 'pokedexes'
@@ -609,6 +640,8 @@ EncounterSlotCondition.condition = relation(EncounterCondition,
 
 EvolutionChain.growth_rate = relation(GrowthRate, backref='evolution_chains')
 
+Experience.growth_rate = relation(GrowthRate, backref='experience_table')
+
 Generation.canonical_pokedex = relation(Pokedex, backref='canonical_for_generation')
 Generation.versions = relation(Version, secondary=VersionGroup.__table__)
 Generation.main_region = relation(Region)
@@ -665,6 +698,18 @@ Nature.decreased_stat = relation(Stat, primaryjoin=Nature.decreased_stat_id==Sta
                                        backref='decreasing_natures')
 Nature.increased_stat = relation(Stat, primaryjoin=Nature.increased_stat_id==Stat.id,
                                        backref='increasing_natures')
+Nature.hates_flavor = relation(ContestType, primaryjoin=Nature.hates_flavor_id==ContestType.id,
+                                       backref='hating_natures')
+Nature.likes_flavor = relation(ContestType, primaryjoin=Nature.likes_flavor_id==ContestType.id,
+                                       backref='liking_natures')
+Nature.battle_style_preferences = relation(NatureBattleStylePreference,
+                                           order_by=NatureBattleStylePreference.move_battle_style_id,
+                                           backref='nature')
+Nature.pokeathlon_effects = relation(NaturePokeathlonStat, order_by=NaturePokeathlonStat.pokeathlon_stat_id)
+
+NatureBattleStylePreference.battle_style = relation(MoveBattleStyle, backref='nature_preferences')
+
+NaturePokeathlonStat.pokeathlon_stat = relation(PokeathlonStat, backref='nature_effects')
 
 Pokedex.region = relation(Region, backref='pokedexes')
 Pokedex.version_groups = relation(VersionGroup, secondary=PokedexVersionGroup.__table__, backref='pokedexes')