"""Add invoice fiat currencies

Revision ID: 771be83a8b87
Revises: 2612994d620f
Create Date: 2020-02-02 10:05:04.281665

"""

from collections.abc import Sequence

import sqlalchemy as sa
from alembic import op

# revision identifiers, used by Alembic.
revision: str = "771be83a8b87"
down_revision: str | None = "2612994d620f"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None


def upgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column(
        "invoices",
        sa.Column("currency", sa.Text(), nullable=True, server_default="USD"),
    )
    op.add_column(
        "stores",
        sa.Column("default_currency", sa.Text(), nullable=True, server_default="USD"),
    )
    op.alter_column("invoices", "currency", server_default=None)
    op.alter_column("stores", "default_currency", server_default=None)
    op.alter_column(
        "invoices",
        column_name="amount",
        new_column_name="price",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
        existing_server_default=None,
    )
    op.alter_column(
        "products",
        column_name="amount",
        new_column_name="price",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
        existing_server_default=None,
    )
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_column("stores", "default_currency")
    op.drop_column("invoices", "currency")
    op.alter_column(
        "invoices",
        column_name="price",
        new_column_name="amount",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
        existing_server_default=None,
    )
    op.alter_column(
        "products",
        column_name="price",
        new_column_name="amount",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
        existing_server_default=None,
    )
    # ### end Alembic commands ###
