"""Add lightning network

Revision ID: e027e56adb58
Revises: 1c465e341efa
Create Date: 2020-12-06 16:46:35.564890

"""

from collections.abc import Sequence

import sqlalchemy as sa
from alembic import op
from sqlalchemy.sql import expression

# revision identifiers, used by Alembic.
revision: str = "e027e56adb58"
down_revision: str | None = "1c465e341efa"
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("paymentmethods", sa.Column("lightning", sa.Boolean(), nullable=True, server_default=expression.false()))
    op.alter_column("paymentmethods", "lightning", server_default=None)
    op.add_column("paymentmethods", sa.Column("node_id", sa.Text(), nullable=True))
    op.add_column("paymentmethods", sa.Column("rhash", sa.Text(), nullable=True))
    op.alter_column(
        "paymentmethods", "payment_address", existing_type=sa.VARCHAR(length=10000), type_=sa.Text(), existing_nullable=False
    )
    op.alter_column(
        "paymentmethods", "payment_url", existing_type=sa.VARCHAR(length=10000), type_=sa.Text(), existing_nullable=False
    )
    op.add_column("paymentmethods", sa.Column("rate", sa.Numeric(precision=16, scale=8), nullable=True, server_default="1"))
    op.alter_column("paymentmethods", "rate", server_default=None)
    op.add_column("wallets", sa.Column("lightning_enabled", sa.Boolean(), nullable=True, server_default=expression.false()))
    op.alter_column("wallets", "lightning_enabled", server_default=None)
    op.execute("update invoices set paid_currency=upper(paid_currency)")
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_column("paymentmethods", "lightning")
    op.drop_column("paymentmethods", "node_id")
    op.alter_column(
        "paymentmethods", "payment_url", existing_type=sa.Text(), type_=sa.VARCHAR(length=10000), existing_nullable=False
    )
    op.alter_column(
        "paymentmethods", "payment_address", existing_type=sa.Text(), type_=sa.VARCHAR(length=10000), existing_nullable=False
    )
    op.drop_column("paymentmethods", "rhash")
    op.drop_column("paymentmethods", "rate")
    op.drop_column("wallets", "lightning_enabled")
    # ### end Alembic commands ###
