浏览代码

Add factory location table

JoostSijm 6 年之前
父节点
当前提交
69dddf7542
共有 2 个文件被更改,包括 45 次插入5 次删除
  1. 9 5
      app/models.py
  2. 36 0
      migrations/versions/3760fb81a289_add_factory_location.py

+ 9 - 5
app/models.py

@@ -267,6 +267,15 @@ class FactoryTrack(Base):
     )
 
 
+class FactoryLocation(Base):
+    """Model for factory location"""
+    __tablename__ = 'factory_location'
+    factory_id = Column(BigInteger, ForeignKey('factory.id'), primary_key=True)
+    region_id = Column(Integer, ForeignKey('region.id'), primary_key=True)
+    from_date_time = Column(DateTime)
+    until_date_time = Column(DateTime)
+
+
 class FactoryStat(Base):
     """Model for factory"""
     __tablename__ = 'factory_stat'
@@ -286,11 +295,6 @@ class FactoryStat(Base):
         'FactoryTrack',
         backref=backref('factory_stats', lazy='dynamic')
     )
-    region_id = Column(Integer, ForeignKey('region.id'))
-    region = relationship(
-        'Region',
-        backref=backref('factory_stats', lazy='dynamic')
-    )
 
 
 class MarketTrack(Base):

+ 36 - 0
migrations/versions/3760fb81a289_add_factory_location.py

@@ -0,0 +1,36 @@
+"""add factory location
+
+Revision ID: 3760fb81a289
+Revises: 1ec3ded43905
+Create Date: 2019-09-06 16:10:05.944413
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '3760fb81a289'
+down_revision = '1ec3ded43905'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    op.create_table('factory_location',
+    sa.Column('factory_id', sa.BigInteger(), nullable=False),
+    sa.Column('region_id', sa.Integer(), nullable=False),
+    sa.Column('from_date_time', sa.DateTime(), nullable=True),
+    sa.Column('until_date_time', sa.DateTime(), nullable=True),
+    sa.ForeignKeyConstraint(['factory_id'], ['factory.id'], name=op.f('fk_factory_location_factory_id_factory')),
+    sa.ForeignKeyConstraint(['region_id'], ['region.id'], name=op.f('fk_factory_location_region_id_region')),
+    sa.PrimaryKeyConstraint('factory_id', 'region_id', name=op.f('pk_factory_location'))
+    )
+    op.drop_constraint('fk_factory_stat_region_id_region', 'factory_stat', type_='foreignkey')
+    op.drop_column('factory_stat', 'region_id')
+
+
+def downgrade():
+    op.add_column('factory_stat', sa.Column('region_id', sa.INTEGER(), autoincrement=False, nullable=True))
+    op.create_foreign_key('fk_factory_stat_region_id_region', 'factory_stat', 'region', ['region_id'], ['id'])
+    op.drop_table('factory_location')