"""Postfaecher und Absender-Zuordnung fuer den Mail-Abruf. Raiffeisen und Revolut melden Ueberweisungen per E-Mail. Diese Tabellen halten fest, aus welchem Postfach abgeholt wird und welcher Absender auf welches Konto bucht. Das Passwort liegt verschluesselt (nicht gehasht): Certain muss es dem Mailserver vorlegen koennen. Revision ID: 0016 Revises: 0015 """ import sqlalchemy as sa from alembic import op revision = "0016" down_revision = "0015" branch_labels = None depends_on = None def upgrade() -> None: op.create_table( "mail_sources", sa.Column("id", sa.Integer(), primary_key=True), sa.Column("owner_id", sa.Integer(), nullable=False), sa.Column("name", sa.String(length=80), nullable=False, server_default=""), sa.Column("host", sa.String(length=255), nullable=False), sa.Column("port", sa.Integer(), nullable=False, server_default="993"), sa.Column("use_ssl", sa.Boolean(), nullable=False, server_default=sa.true()), sa.Column("username", sa.String(length=255), nullable=False), sa.Column("password_enc", sa.Text(), nullable=False), sa.Column("folder", sa.String(length=255), nullable=False, server_default="INBOX"), sa.Column("done_folder", sa.String(length=255), nullable=True), sa.Column("mark_seen", sa.Boolean(), nullable=False, server_default=sa.true()), sa.Column("is_active", sa.Boolean(), nullable=False, server_default=sa.true()), sa.Column("poll_minutes", sa.Integer(), nullable=False, server_default="15"), sa.Column("last_poll_at", sa.DateTime(timezone=True), nullable=True), sa.Column("last_error", sa.Text(), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint(["owner_id"], ["users.id"], ondelete="CASCADE"), ) op.create_index("ix_mail_sources_owner_id", "mail_sources", ["owner_id"]) op.create_table( "mail_senders", sa.Column("id", sa.Integer(), primary_key=True), sa.Column("source_id", sa.Integer(), nullable=False), sa.Column("owner_id", sa.Integer(), nullable=False), sa.Column("name", sa.String(length=80), nullable=False, server_default=""), sa.Column("from_contains", sa.String(length=255), nullable=True), sa.Column("subject_contains", sa.String(length=255), nullable=True), sa.Column("account_id", sa.Integer(), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint(["source_id"], ["mail_sources.id"], ondelete="CASCADE"), sa.ForeignKeyConstraint(["owner_id"], ["users.id"], ondelete="CASCADE"), sa.ForeignKeyConstraint(["account_id"], ["accounts.id"], ondelete="SET NULL"), ) op.create_index("ix_mail_senders_source_id", "mail_senders", ["source_id"]) op.create_index("ix_mail_senders_owner_id", "mail_senders", ["owner_id"]) def downgrade() -> None: op.drop_table("mail_senders") op.drop_table("mail_sources")