110 lines
4.9 KiB
Python
110 lines
4.9 KiB
Python
"""initial_schema
|
|
|
|
Revision ID: 516b55c83144
|
|
Revises:
|
|
Create Date: 2024-04-02 22:52:44.614707
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
import dexorder.database
|
|
import dexorder.database.column_types
|
|
from sqlalchemy.dialects import postgresql
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = '516b55c83144'
|
|
down_revision: Union[str, None] = None
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.create_table('keyvalue',
|
|
sa.Column('key', sa.String(), nullable=False),
|
|
sa.Column('value', postgresql.JSONB(astext_type=sa.Text()), nullable=True),
|
|
sa.PrimaryKeyConstraint('key')
|
|
)
|
|
op.create_table('orderindex',
|
|
sa.Column('chain', dexorder.database.column_types.Blockchain(), nullable=False),
|
|
sa.Column('vault', sa.String(), nullable=False),
|
|
sa.Column('order_index', sa.Integer(), nullable=False),
|
|
sa.Column('state', sa.Enum('Unknown', 'Signing', 'Underfunded', 'Open', 'Canceled', 'Expired', 'Filled', name='swaporderstate'), nullable=False),
|
|
sa.PrimaryKeyConstraint('chain', 'vault', 'order_index')
|
|
)
|
|
op.create_table('pool',
|
|
sa.Column('chain', dexorder.database.column_types.Blockchain(), nullable=False),
|
|
sa.Column('address', dexorder.database.column_types.Address(), nullable=False),
|
|
sa.Column('exchange', sa.Enum('Unknown', 'UniswapV2', 'UniswapV3', name='exchange'), nullable=False),
|
|
sa.Column('base', dexorder.database.column_types.Address(), nullable=False),
|
|
sa.Column('quote', dexorder.database.column_types.Address(), nullable=False),
|
|
sa.Column('fee', sa.Integer(), nullable=False),
|
|
sa.Column('decimals', sa.Integer(), nullable=False),
|
|
sa.PrimaryKeyConstraint('chain', 'address')
|
|
)
|
|
op.create_index(op.f('ix_pool_base'), 'pool', ['base'], unique=False)
|
|
op.create_index(op.f('ix_pool_quote'), 'pool', ['quote'], unique=False)
|
|
op.create_table('seriesdict',
|
|
sa.Column('value', sa.String(), nullable=False),
|
|
sa.Column('chain', sa.Integer(), nullable=False),
|
|
sa.Column('series', sa.String(), nullable=False),
|
|
sa.Column('key', sa.String(), nullable=False),
|
|
sa.PrimaryKeyConstraint('chain', 'series', 'key')
|
|
)
|
|
op.create_table('seriesset',
|
|
sa.Column('chain', sa.Integer(), nullable=False),
|
|
sa.Column('series', sa.String(), nullable=False),
|
|
sa.Column('key', sa.String(), nullable=False),
|
|
sa.PrimaryKeyConstraint('chain', 'series', 'key')
|
|
)
|
|
op.create_table('token',
|
|
sa.Column('chain', dexorder.database.column_types.Blockchain(), nullable=False),
|
|
sa.Column('address', dexorder.database.column_types.Address(), nullable=False),
|
|
sa.Column('name', sa.String(), nullable=False),
|
|
sa.Column('symbol', sa.String(), nullable=False),
|
|
sa.Column('decimals', sa.SMALLINT(), nullable=False),
|
|
sa.Column('approved', sa.Boolean(), nullable=False),
|
|
sa.PrimaryKeyConstraint('chain', 'address')
|
|
)
|
|
op.create_table('transactionjob',
|
|
sa.Column('id', sa.UUID(), nullable=False),
|
|
sa.Column('chain', dexorder.database.column_types.Blockchain(), nullable=False),
|
|
sa.Column('height', sa.Integer(), nullable=False),
|
|
sa.Column('state', sa.Enum('Requested', 'Signed', 'Sent', 'Mined', name='transactionjobstate'), nullable=False),
|
|
sa.Column('request', dexorder.database.column_types.DataclassDictBase(astext_type=sa.Text()), nullable=False),
|
|
sa.PrimaryKeyConstraint('id')
|
|
)
|
|
op.create_index(op.f('ix_transactionjob_chain'), 'transactionjob', ['chain'], unique=False)
|
|
op.create_index(op.f('ix_transactionjob_height'), 'transactionjob', ['height'], unique=False)
|
|
op.create_index(op.f('ix_transactionjob_state'), 'transactionjob', ['state'], unique=False)
|
|
op.create_table('tx',
|
|
sa.Column('id', postgresql.BYTEA(), nullable=False),
|
|
sa.Column('data', postgresql.BYTEA(), nullable=False),
|
|
sa.Column('job_id', sa.UUID(), nullable=False),
|
|
sa.Column('receipt', postgresql.JSONB(astext_type=sa.Text()), nullable=True),
|
|
sa.ForeignKeyConstraint(['job_id'], ['transactionjob.id'], ),
|
|
sa.PrimaryKeyConstraint('id')
|
|
)
|
|
# ### end Alembic commands ###
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_table('tx')
|
|
op.drop_index(op.f('ix_transactionjob_state'), table_name='transactionjob')
|
|
op.drop_index(op.f('ix_transactionjob_height'), table_name='transactionjob')
|
|
op.drop_index(op.f('ix_transactionjob_chain'), table_name='transactionjob')
|
|
op.drop_table('transactionjob')
|
|
op.drop_table('token')
|
|
op.drop_table('seriesset')
|
|
op.drop_table('seriesdict')
|
|
op.drop_index(op.f('ix_pool_quote'), table_name='pool')
|
|
op.drop_index(op.f('ix_pool_base'), table_name='pool')
|
|
op.drop_table('pool')
|
|
op.drop_table('orderindex')
|
|
op.drop_table('keyvalue')
|
|
op.execute('drop type swaporderstate') # enum type
|
|
op.execute('drop type transactionjobstate') # enum type
|
|
op.execute('drop type exchange') # enum type
|