"""Add ETH

Revision ID: 69b52fb159ed
Revises: d42daa00adf8
Create Date: 2022-03-17 12:36:38.746587

"""

from collections.abc import Sequence

import sqlalchemy as sa
from alembic import op

# revision identifiers, used by Alembic.
revision: str = "69b52fb159ed"
down_revision: str | None = "d42daa00adf8"
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.alter_column(
        "invoices",
        "price",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        type_=sa.Numeric(precision=36, scale=18),
        existing_nullable=False,
    )
    op.add_column("paymentmethods", sa.Column("lookup_field", sa.Text(), nullable=True))
    op.execute("update paymentmethods set lookup_field=case when lightning=true then rhash else payment_address end")
    op.alter_column(
        "paymentmethods",
        "amount",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        type_=sa.Numeric(precision=36, scale=18),
        existing_nullable=False,
    )
    op.alter_column(
        "paymentmethods",
        "rate",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        type_=sa.Numeric(precision=36, scale=18),
        existing_nullable=True,
    )
    op.alter_column(
        "paymentmethods",
        "recommended_fee",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        type_=sa.Numeric(precision=36, scale=18),
        existing_nullable=False,
    )
    op.alter_column(
        "products",
        "price",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        type_=sa.Numeric(precision=36, scale=18),
        existing_nullable=False,
    )
    op.alter_column(
        "products",
        "quantity",
        existing_type=sa.NUMERIC(precision=16, scale=8),
        type_=sa.Numeric(precision=36, scale=18),
        existing_nullable=False,
    )
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.alter_column(
        "products",
        "quantity",
        existing_type=sa.Numeric(precision=36, scale=18),
        type_=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
    )
    op.alter_column(
        "products",
        "price",
        existing_type=sa.Numeric(precision=36, scale=18),
        type_=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
    )
    op.alter_column(
        "paymentmethods",
        "recommended_fee",
        existing_type=sa.Numeric(precision=36, scale=18),
        type_=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
    )
    op.alter_column(
        "paymentmethods",
        "rate",
        existing_type=sa.Numeric(precision=36, scale=18),
        type_=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=True,
    )
    op.alter_column(
        "paymentmethods",
        "amount",
        existing_type=sa.Numeric(precision=36, scale=18),
        type_=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
    )
    op.drop_column("paymentmethods", "lookup_field")
    op.alter_column(
        "invoices",
        "price",
        existing_type=sa.Numeric(precision=36, scale=18),
        type_=sa.NUMERIC(precision=16, scale=8),
        existing_nullable=False,
    )
    # ### end Alembic commands ###
