diff --git a/app/models.py b/app/models.py index b4fcf510..47250130 100644 --- a/app/models.py +++ b/app/models.py @@ -552,3 +552,12 @@ class Subscription(db.Model, ModelMixin): ) user = db.relationship(User) + + +class DeletedAlias(db.Model, ModelMixin): + """Store all deleted alias to make sure they are NOT reused""" + + user_id = db.Column( + db.ForeignKey(User.id, ondelete="cascade"), nullable=False, unique=True + ) + email = db.Column(db.String(128), unique=True, nullable=False) diff --git a/migrations/versions/d68a2d971b70_.py b/migrations/versions/d68a2d971b70_.py new file mode 100644 index 00000000..c0fedfc6 --- /dev/null +++ b/migrations/versions/d68a2d971b70_.py @@ -0,0 +1,39 @@ +"""empty message + +Revision ID: d68a2d971b70 +Revises: 6bbda4685999 +Create Date: 2019-11-18 15:08:33.631447 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'd68a2d971b70' +down_revision = '6bbda4685999' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('deleted_alias', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('email', sa.String(length=128), nullable=False), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('email'), + sa.UniqueConstraint('user_id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('deleted_alias') + # ### end Alembic commands ###