"""accounting, vaultcreation, ofac Revision ID: 509010f13e8b Revises: 86afa7b6415d Create Date: 2025-01-03 19:11:22.073682 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op from sqlalchemy.dialects import postgresql import dexorder.database import dexorder.database.column_types # revision identifiers, used by Alembic. revision: str = '509010f13e8b' down_revision: Union[str, None] = '86afa7b6415d' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.execute("ALTER TYPE transactionjobstate ADD VALUE 'Declined'") op.create_table('accounting', sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), sa.Column('time', sa.DateTime(), nullable=False), sa.Column('account', sa.String(), nullable=False), sa.Column('category', sa.Enum('Transfer', 'Income', 'Expense', 'Trade', 'Special', name='accountingcategory'), nullable=False), sa.Column('subcategory', sa.Enum('OrderFee', 'GasFee', 'FillFee', 'VaultCreation', 'Execution', 'InitialBalance', name='accountingsubcategory'), nullable=True), sa.Column('token', sa.String(), nullable=False), sa.Column('amount', dexorder.database.column_types.DecimalNumeric(), nullable=False), sa.Column('value', dexorder.database.column_types.DecimalNumeric(), nullable=True), sa.Column('chain_id', sa.Integer(), nullable=False), sa.Column('tx_id', sa.String(), nullable=True), sa.Column('note', sa.String(), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_accounting_category'), 'accounting', ['category'], unique=False) op.create_index(op.f('ix_accounting_subcategory'), 'accounting', ['subcategory'], unique=False) op.create_index(op.f('ix_accounting_time'), 'accounting', ['time'], unique=False) op.create_index(op.f('ix_accounting_token'), 'accounting', ['token'], unique=False) op.create_index(op.f('ix_accounting_account'), 'accounting', ['account'], unique=False) op.create_table('ofac', sa.Column('address', sa.String(), nullable=False), sa.PrimaryKeyConstraint('address') ) op.create_table('ofacalerts', sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), sa.Column('time', sa.DateTime(), nullable=False), sa.Column('address', sa.String(), nullable=False), sa.Column('ip', sa.String(), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_table('vaultcreationrequest', sa.Column('chain', dexorder.database.column_types.Blockchain(), nullable=False), sa.Column('owner', sa.String(), nullable=False), sa.Column('num', sa.Integer(), nullable=False), sa.Column('time', sa.DateTime(), nullable=False), sa.Column('ipaddr', postgresql.INET(), nullable=False), sa.Column('vault', sa.String(), nullable=True), sa.PrimaryKeyConstraint('chain', 'owner', 'num') ) op.create_index('ix_vault_address_not_null', 'vaultcreationrequest', ['vault'], unique=False, postgresql_where='vault IS NOT NULL') op.create_table('accounts', sa.Column('chain', dexorder.database.column_types.Blockchain(), nullable=False), sa.Column('address', sa.String(), nullable=False), sa.Column('kind', sa.Enum('Admin', 'OrderFee', 'GasFee', 'FillFee', 'Execution', name='accountkind'), nullable=False), sa.Column('balances', dexorder.database.column_types.Balances(astext_type=sa.Text()), server_default='{}', nullable=False), sa.PrimaryKeyConstraint('chain', 'address') ) op.create_index(op.f('ix_accounts_kind'), 'accounts', ['kind'], unique=False) def downgrade() -> None: op.drop_index(op.f('ix_accounting_account'), table_name='accounting') op.drop_index(op.f('ix_accounts_kind'), table_name='accounts') op.drop_table('accounts') op.drop_index('ix_vault_address_not_null', table_name='vaultcreationrequest', postgresql_where='vault IS NOT NULL') op.drop_table('vaultcreationrequest') op.drop_table('ofacalerts') # op.execute('drop sequence ofacalerts_id_seq') # autoincrement sequence op.drop_table('ofac') op.drop_index(op.f('ix_accounting_token'), table_name='accounting') op.drop_index(op.f('ix_accounting_time'), table_name='accounting') op.drop_index(op.f('ix_accounting_subcategory'), table_name='accounting') op.drop_index(op.f('ix_accounting_category'), table_name='accounting') op.drop_table('accounting') # op.execute('drop sequence accounting_id_seq') # autoincrement sequence op.execute('drop type accountkind') # enum type op.execute('drop type accountingcategory') # enum type op.execute('drop type accountingsubcategory') # enum type