"""Add plugin data

Revision ID: 3801b9cf3278
Revises: d143acc929ee
Create Date: 2022-12-18 21:40:23.649600

"""

from collections.abc import Sequence

import sqlalchemy as sa
from alembic import op

# revision identifiers, used by Alembic.
revision: str = "3801b9cf3278"
down_revision: str | None = "d143acc929ee"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None


def add_json_field(table_name, column_name):
    op.add_column(table_name, sa.Column(column_name, sa.JSON(), nullable=True, server_default="{}"))
    op.alter_column(table_name, column_name, server_default=None)


def upgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    add_json_field("discounts", "metadata")
    add_json_field("invoices", "metadata")
    add_json_field("notifications", "metadata")
    add_json_field("paymentmethods", "metadata")
    add_json_field("payouts", "metadata")
    add_json_field("products", "metadata")
    add_json_field("stores", "metadata")
    add_json_field("templates", "metadata")
    add_json_field("tokens", "metadata")
    add_json_field("users", "metadata")
    add_json_field("wallets", "metadata")
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_column("wallets", "metadata")
    op.drop_column("users", "metadata")
    op.drop_column("tokens", "metadata")
    op.drop_column("templates", "metadata")
    op.drop_column("stores", "metadata")
    op.drop_column("products", "metadata")
    op.drop_column("payouts", "metadata")
    op.drop_column("paymentmethods", "metadata")
    op.drop_column("notifications", "metadata")
    op.drop_column("invoices", "metadata")
    op.drop_column("discounts", "metadata")
    # ### end Alembic commands ###
