Alembic is a lightweight database migration tool for usage with the SQLAlchemy Database Toolkit for Python. https://alembic.sqlalchemy.org/en/latest/index.html Adds first version of DB schema.
112 lines
3.8 KiB
Python
112 lines
3.8 KiB
Python
"""Init
|
|
|
|
Revision ID: 50ff1fbb8a00
|
|
Revises:
|
|
Create Date: 2022-12-03 11:49:30.450115+00:00
|
|
|
|
"""
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = "50ff1fbb8a00"
|
|
down_revision = None
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.create_table(
|
|
"banks",
|
|
sa.Column("name", sa.String(), nullable=False),
|
|
sa.Column("BIC", sa.String(length=8), nullable=False),
|
|
sa.Column(
|
|
"type",
|
|
sa.Enum(
|
|
"checking",
|
|
"savings",
|
|
"investment",
|
|
"VISA",
|
|
"MASTERCARD",
|
|
name="accounttype",
|
|
schema="transactions",
|
|
inherit_schema=True,
|
|
),
|
|
nullable=False,
|
|
),
|
|
sa.PrimaryKeyConstraint("BIC", "type", name=op.f("pk_banks")),
|
|
sa.UniqueConstraint("name", name=op.f("uq_banks_name")),
|
|
schema="transactions",
|
|
)
|
|
op.create_table(
|
|
"nordigen",
|
|
sa.Column("name", sa.Text(), nullable=False),
|
|
sa.Column("bank_id", sa.String(), nullable=True),
|
|
sa.Column("requisition_id", sa.String(), nullable=True),
|
|
sa.Column("invert", sa.Boolean(), nullable=True),
|
|
sa.ForeignKeyConstraint(
|
|
["name"], ["transactions.banks.name"], name=op.f("fk_nordigen_name_banks")
|
|
),
|
|
sa.PrimaryKeyConstraint("name", name=op.f("pk_nordigen")),
|
|
schema="transactions",
|
|
)
|
|
op.create_table(
|
|
"originals",
|
|
sa.Column("id", sa.BigInteger(), autoincrement=True, nullable=False),
|
|
sa.Column("date", sa.Date(), nullable=False),
|
|
sa.Column("description", sa.String(), nullable=True),
|
|
sa.Column("bank", sa.Text(), nullable=False),
|
|
sa.Column("amount", sa.Numeric(precision=16, scale=2), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["bank"], ["transactions.banks.name"], name=op.f("fk_originals_bank_banks")
|
|
),
|
|
sa.PrimaryKeyConstraint("id", name=op.f("pk_originals")),
|
|
schema="transactions",
|
|
)
|
|
op.create_table(
|
|
"categorized",
|
|
sa.Column("id", sa.BigInteger(), nullable=False),
|
|
sa.Column("category", sa.String(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["id"],
|
|
["transactions.originals.id"],
|
|
name=op.f("fk_categorized_id_originals"),
|
|
),
|
|
sa.PrimaryKeyConstraint("id", name=op.f("pk_categorized")),
|
|
schema="transactions",
|
|
)
|
|
op.create_table(
|
|
"notes",
|
|
sa.Column("id", sa.BigInteger(), nullable=False),
|
|
sa.Column("note", sa.String(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["id"], ["transactions.originals.id"], name=op.f("fk_notes_id_originals")
|
|
),
|
|
sa.PrimaryKeyConstraint("id", name=op.f("pk_notes")),
|
|
schema="transactions",
|
|
)
|
|
op.create_table(
|
|
"tags",
|
|
sa.Column("id", sa.BigInteger(), nullable=False),
|
|
sa.Column("tag", sa.String(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["id"], ["transactions.originals.id"], name=op.f("fk_tags_id_originals")
|
|
),
|
|
sa.PrimaryKeyConstraint("id", "tag", name=op.f("pk_tags")),
|
|
schema="transactions",
|
|
)
|
|
# ### end Alembic commands ###
|
|
|
|
|
|
def downgrade() -> None:
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.drop_table("tags", schema="transactions")
|
|
op.drop_table("notes", schema="transactions")
|
|
op.drop_table("categorized", schema="transactions")
|
|
op.drop_table("originals", schema="transactions")
|
|
op.drop_table("nordigen", schema="transactions")
|
|
op.drop_table("banks", schema="transactions")
|
|
# ### end Alembic commands ###
|