Selaa lähdekoodia

Add Telegram models and migration

JoostSijm 5 vuotta sitten
vanhempi
commit
3b4ad74de5
2 muutettua tiedostoa jossa 96 lisäystä ja 0 poistoa
  1. 37 0
      app/models.py
  2. 59 0
      migrations/versions/75b3282b1d3f_add_telegram_account.py

+ 37 - 0
app/models.py

@@ -353,3 +353,40 @@ class StateMarketStat(Base):
         'MarketTrack',
         backref=backref('state_market_stats', lazy='dynamic')
     )
+
+class TelegramAccount(Base):
+    """Model for Telegram account"""
+    __tablename__ = 'telegram_account'
+    id = Column(BigInteger, primary_key=True)
+    name = Column(String)
+    registration_date = Column(DateTime)
+
+class TelegramHandle(Base):
+    """Model for Telegram handle"""
+    __tablename__ = 'telegram_handle'
+    id = Column(Integer, primary_key=True)
+    handle = Column(String)
+    registration_date = Column(DateTime)
+
+    telegram_account_id = Column(BigInteger, ForeignKey('telegram_account.id'))
+    telegram_account = relationship(
+        'TelegramAccount',
+        backref=backref('account_handles', lazy='dynamic')
+    )
+
+class PlayerTelegram(Base):
+    """Model for belongs to"""
+    __tablename__ = 'player_telegram'
+    player_id = Column(BigInteger, ForeignKey('player.id'), primary_key=True)
+    telegram_id = Column(BigInteger, ForeignKey('telegram_account.id'), primary_key=True)
+    from_date_time = Column(DateTime, primary_key=True)
+    until_date_time = Column(DateTime)
+
+class TelegramVerification(Base):
+    """Model for Telegram verification"""
+    __tablename__ = 'telegram_verification'
+    player_id = Column(BigInteger, ForeignKey('player.id'), primary_key=True)
+    telegram_id = Column(BigInteger, ForeignKey('telegram_account.id'), primary_key=True)
+    code = Column(String)
+    date_time = Column(DateTime)
+    confirmed = Column(Boolean, server_default='f', default=False)

+ 59 - 0
migrations/versions/75b3282b1d3f_add_telegram_account.py

@@ -0,0 +1,59 @@
+"""add_telegram_account
+
+Revision ID: 75b3282b1d3f
+Revises: 661865b159c9
+Create Date: 2020-01-26 15:17:12.904010
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '75b3282b1d3f'
+down_revision = '661865b159c9'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    op.create_table('telegram_account',
+    sa.Column('id', sa.BigInteger(), nullable=False),
+    sa.Column('name', sa.String(), nullable=True),
+    sa.Column('registration_date', sa.DateTime(), nullable=True),
+    sa.PrimaryKeyConstraint('id', name=op.f('pk_telegram_account'))
+    )
+    op.create_table('player_telegram',
+    sa.Column('player_id', sa.BigInteger(), nullable=False),
+    sa.Column('telegram_id', sa.BigInteger(), nullable=False),
+    sa.Column('from_date_time', sa.DateTime(), nullable=False),
+    sa.Column('until_date_time', sa.DateTime(), nullable=True),
+    sa.ForeignKeyConstraint(['player_id'], ['player.id'], name=op.f('fk_player_telegram_player_id_player')),
+    sa.ForeignKeyConstraint(['telegram_id'], ['telegram_account.id'], name=op.f('fk_player_telegram_telegram_id_telegram_account')),
+    sa.PrimaryKeyConstraint('player_id', 'telegram_id', 'from_date_time', name=op.f('pk_player_telegram'))
+    )
+    op.create_table('telegram_handle',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('handle', sa.String(), nullable=True),
+    sa.Column('registration_date', sa.DateTime(), nullable=True),
+    sa.Column('telegram_account_id', sa.BigInteger(), nullable=True),
+    sa.ForeignKeyConstraint(['telegram_account_id'], ['telegram_account.id'], name=op.f('fk_telegram_handle_telegram_account_id_telegram_account')),
+    sa.PrimaryKeyConstraint('id', name=op.f('pk_telegram_handle'))
+    )
+    op.create_table('telegram_verification',
+    sa.Column('player_id', sa.BigInteger(), nullable=False),
+    sa.Column('telegram_id', sa.BigInteger(), nullable=False),
+    sa.Column('code', sa.String(), nullable=True),
+    sa.Column('date_time', sa.DateTime(), nullable=True),
+    sa.Column('confirmed', sa.Boolean(), server_default='f', nullable=True),
+    sa.ForeignKeyConstraint(['player_id'], ['player.id'], name=op.f('fk_telegram_verification_player_id_player')),
+    sa.ForeignKeyConstraint(['telegram_id'], ['telegram_account.id'], name=op.f('fk_telegram_verification_telegram_id_telegram_account')),
+    sa.PrimaryKeyConstraint('player_id', 'telegram_id', name=op.f('pk_telegram_verification'))
+    )
+
+
+def downgrade():
+    op.drop_table('telegram_verification')
+    op.drop_table('telegram_handle')
+    op.drop_table('player_telegram')
+    op.drop_table('telegram_account')