Shorten some over-long move effect changelog entries.
[zzz-pokedex.git] / pokedex / db / tables.py
index 1bbab38..812fdc2 100644 (file)
@@ -590,7 +590,7 @@ class MoveEffectChangelog(TableBase):
         info=dict(description="The ID of the effect that changed"))
     changed_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False,
         info=dict(description="The ID of the version group in which the effect changed"))
-    effect = Column(markdown.MarkdownColumn(255), nullable=False,
+    effect = Column(markdown.MarkdownColumn(512), nullable=False,
         info=dict(description="A description of the old behavior", format='markdown'))
 
 class MoveFlag(TableBase):
@@ -665,8 +665,8 @@ class Move(TableBase):
         info=dict(description="ID of the move's elemental type"))
     power = Column(SmallInteger, nullable=False,
         info=dict(description="Base power of the move"))
-    pp = Column(SmallInteger, nullable=False,
-        info=dict(description="Base PP (Power Points) of the move"))
+    pp = Column(SmallInteger, nullable=True,
+        info=dict(description="Base PP (Power Points) of the move, nullable if not applicable (e.g. Struggle and Shadow moves)."))
     accuracy = Column(SmallInteger, nullable=True,
         info=dict(description="Accuracy of the move; NULL means it never misses"))
     priority = Column(SmallInteger, nullable=False,
@@ -1264,8 +1264,8 @@ class Type(TableBase):
         info=dict(description=u"An arbitrary 3-letter abbreviation of this type.", format='plaintext'))  # XXX: Or is it not arbitrary?
     generation_id = Column(Integer, ForeignKey('generations.id'), nullable=False,
         info=dict(description=u"The ID of the generation this type first appeared in."))
-    damage_class_id = Column(Integer, ForeignKey('move_damage_classes.id'), nullable=False,
-        info=dict(description=u"The ID of the damage class this type's moves had before Generation IV."))
+    damage_class_id = Column(Integer, ForeignKey('move_damage_classes.id'), nullable=True,
+        info=dict(description=u"The ID of the damage class this type's moves had before Generation IV, null if not applicable (e.g. ???)."))
 
 class TypeName(TableBase):
     u"""An official non-English name of an elemental type."""
@@ -1318,6 +1318,7 @@ Ability.foreign_names = relation(AbilityName, backref='ability')
 Ability.generation = relation(Generation, backref='abilities')
 Ability.all_pokemon = relation(Pokemon,
     secondary=PokemonAbility.__table__,
+    order_by=Pokemon.order,
     back_populates='all_abilities',
 )
 Ability.pokemon = relation(Pokemon,
@@ -1326,6 +1327,7 @@ Ability.pokemon = relation(Pokemon,
         PokemonAbility.ability_id == Ability.id,
         PokemonAbility.is_dream == False
     ),
+    order_by=Pokemon.order,
     back_populates='abilities',
 )
 Ability.dream_pokemon = relation(Pokemon,
@@ -1334,6 +1336,7 @@ Ability.dream_pokemon = relation(Pokemon,
         PokemonAbility.ability_id == Ability.id,
         PokemonAbility.is_dream == True
     ),
+    order_by=Pokemon.order,
     back_populates='dream_ability',
 )
 
@@ -1434,7 +1437,7 @@ Move.super_contest_effect = relation(SuperContestEffect, backref='moves')
 Move.super_contest_combo_next = association_proxy('super_contest_combo_first', 'second')
 Move.super_contest_combo_prev = association_proxy('super_contest_combo_second', 'first')
 Move.target = relation(MoveTarget, backref='moves')
-Move.type = relation(Type, backref='moves')
+Move.type = relation(Type, back_populates='moves')
 
 Move.effect = markdown.MoveEffectProperty('effect')
 Move.short_effect = markdown.MoveEffectProperty('short_effect')
@@ -1448,8 +1451,14 @@ MoveChangelog.short_effect = markdown.MoveEffectProperty('short_effect')
 
 MoveEffect.category_map = relation(MoveEffectCategoryMap)
 MoveEffect.categories = association_proxy('category_map', 'category')
+MoveEffect.changelog = relation(MoveEffectChangelog,
+    order_by=MoveEffectChangelog.changed_in_version_group_id.desc(),
+    backref='move_effect',
+)
 MoveEffectCategoryMap.category = relation(MoveEffectCategory)
 
+MoveEffectChangelog.changed_in = relation(VersionGroup, backref='move_effect_changelog')
+
 MoveFlag.flag = relation(MoveFlagType)
 
 MoveFlavorText.version_group = relation(VersionGroup)
@@ -1628,6 +1637,7 @@ Type.foreign_names = relation(TypeName, backref='type')
 Type.pokemon = relation(Pokemon, secondary=PokemonType.__table__,
                                  order_by=Pokemon.order,
                                  back_populates='types')
+Type.moves = relation(Move, back_populates='type', order_by=Move.name)
 
 TypeName.language = relation(Language)