X-Git-Url: http://git.veekun.com/zzz-pokedex.git/blobdiff_plain/0c0d4583c32995109e811e50e1a17edbdb72662e..20d6ce6d390bded9cdfbb33d94e5cf3fbe5ed5e4:/pokedex/db/tables.py diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index ab4c671..1db5898 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -672,6 +672,20 @@ class Move(TableBase): super_contest_effect_id = Column(Integer, ForeignKey('super_contest_effects.id'), nullable=True, info=dict(description="ID of the move's Super Contest effect")) +class MoveChangelog(TableBase): + """History of changes to moves across main game versions.""" + __tablename__ = 'move_changelog' + move_id = Column(Integer, ForeignKey('moves.id'), primary_key=True, nullable=False, + info=dict(description="ID of the move that changed")) + changed_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False, + info=dict(description="ID of the version group in which the move changed")) + power = Column(SmallInteger, nullable=True, + info=dict(description="Prior base power of the move, or NULL if unchanged")) + pp = Column(SmallInteger, nullable=True, + info=dict(description="Prior base PP of the move, or NULL if unchanged")) + accuracy = Column(SmallInteger, nullable=True, + info=dict(description="Prior accuracy of the move, or NULL if unchanged")) + class Nature(TableBase): u"""A nature a pokémon can have, such as Calm or Brave """ @@ -757,15 +771,6 @@ class Pokedex(TableBase): description = Column(Unicode(512), info=dict(description=u"A longer description of the pokédex", format='plaintext')) -class PokedexVersionGroup(TableBase): - u"""Maps a pokédex to the version group that uses it - """ - __tablename__ = 'pokedex_version_groups' - pokedex_id = Column(Integer, ForeignKey('pokedexes.id'), primary_key=True, nullable=False, autoincrement=False, - info=dict(description=u"ID of the pokédex")) - version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False, autoincrement=False, - info=dict(description=u"ID of the version group")) - class Pokemon(TableBase): u"""A species of Pokémon. The core to this whole mess. """ @@ -1243,6 +1248,8 @@ class VersionGroup(TableBase): info=dict(description=u"A numeric ID")) generation_id = Column(Integer, ForeignKey('generations.id'), nullable=False, info=dict(description=u"ID of the generation the games of this group belong to")) + pokedex_id = Column(Integer, ForeignKey('pokedexes.id'), nullable=False, + info=dict(description=u"ID of the regional Pokédex used in this version group.")) class VersionGroupRegion(TableBase): u"""Maps a region to a game version group that features it @@ -1351,6 +1358,10 @@ LocationInternalID.generation = relation(Generation) Machine.item = relation(Item) Machine.version_group = relation(VersionGroup) +Move.changelog = relation(MoveChangelog, + order_by=MoveChangelog.changed_in_version_group_id.asc(), + backref='move', +) Move.contest_effect = relation(ContestEffect, backref='moves') Move.contest_combo_next = association_proxy('contest_combo_first', 'second') Move.contest_combo_prev = association_proxy('contest_combo_second', 'first') @@ -1372,6 +1383,8 @@ Move.type = relation(Type, backref='moves') Move.effect = markdown.MoveEffectProperty('effect') Move.short_effect = markdown.MoveEffectProperty('short_effect') +MoveChangelog.changed_in = relation(VersionGroup, backref='move_changelog') + MoveEffect.category_map = relation(MoveEffectCategoryMap) MoveEffect.categories = association_proxy('category_map', 'category') MoveEffectCategoryMap.category = relation(MoveEffectCategory) @@ -1403,7 +1416,7 @@ NatureName.language = relation(Language) NaturePokeathlonStat.pokeathlon_stat = relation(PokeathlonStat, backref='nature_effects') Pokedex.region = relation(Region, backref='pokedexes') -Pokedex.version_groups = relation(VersionGroup, secondary=PokedexVersionGroup.__table__, backref='pokedexes') +Pokedex.version_groups = relation(VersionGroup, order_by=VersionGroup.id, back_populates='pokedex') Pokemon.all_abilities = relation(Ability, secondary=PokemonAbility.__table__, @@ -1555,3 +1568,4 @@ Version.generation = association_proxy('version_group', 'generation') VersionGroup.generation = relation(Generation, backref='version_groups') VersionGroup.version_group_regions = relation(VersionGroupRegion, backref='version_group') VersionGroup.regions = association_proxy('version_group_regions', 'region') +VersionGroup.pokedex = relation(Pokedex, back_populates='version_groups')