from sqlalchemy import Column, ForeignKey, MetaData, Table
from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import backref, relation
from sqlalchemy.types import *
from sqlalchemy.databases.mysql import *
internal_id = Column(Integer, nullable=False)
name = Column(Unicode(64), nullable=True)
+class Machine(TableBase):
+ __tablename__ = 'machines'
+ machine_number = Column(Integer, primary_key=True, nullable=False, autoincrement=False)
+ generation_id = Column(Integer, ForeignKey('generations.id'), primary_key=True, nullable=False, autoincrement=False)
+ move_id = Column(Integer, ForeignKey('moves.id'), nullable=False)
+
class MoveEffect(TableBase):
__tablename__ = 'move_effects'
id = Column(Integer, primary_key=True, nullable=False)
__tablename__ = 'moves'
id = Column(Integer, primary_key=True, nullable=False)
name = Column(Unicode(12), nullable=False)
+ generation_id = Column(Integer, ForeignKey('generations.id'), nullable=False)
type_id = Column(Integer, ForeignKey('types.id'), nullable=False)
power = Column(SmallInteger)
pp = Column(SmallInteger, nullable=False)
version_group_id = Column(Integer, ForeignKey('version_groups.id'), nullable=False)
name = Column(Unicode(32), nullable=False)
+ generation = association_proxy('version_group', 'generation')
+
### Relations down here, to avoid ordering problems
Encounter.pokemon = relation(Pokemon, backref='encounters')
EvolutionChain.growth_rate = relation(GrowthRate, backref='evolution_chains')
+Generation.versions = relation(Version, secondary=VersionGroup.__table__)
+
LocationArea.location = relation(Location, backref='areas')
+Machine.generation = relation(Generation)
+
Move.type = relation(Type, backref='moves')
+Move.generation = relation(Generation, backref='moves')
+Move.target = relation(MoveTarget, backref='moves')
+Move.effect = relation(MoveEffect, backref='moves')
+Move.machines = relation(Machine, backref='move')
Pokemon.abilities = relation(Ability, secondary=PokemonAbility.__table__,
order_by=PokemonAbility.slot,
==TypeEfficacy.target_type_id,
backref='target_type')
-Version.generation = relation(Generation, secondary=VersionGroup.__table__,
- backref='versions')
Version.version_group = relation(VersionGroup, backref='versions')
+
+VersionGroup.generation = relation(Generation, backref='version_groups')