88 lines
3.6 KiB
Python
88 lines
3.6 KiB
Python
"""
|
|
initial schema
|
|
|
|
Revision ID: db62e7db828d
|
|
Revises:
|
|
Create Date: 2023-09-28 23:04:41.020644
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
import dexorder.database
|
|
from sqlalchemy.dialects import postgresql
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = 'db62e7db828d'
|
|
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:
|
|
op.create_table('block',
|
|
sa.Column('chain', sa.Integer(), nullable=False),
|
|
sa.Column('height', sa.Integer(), nullable=False),
|
|
sa.Column('hash', sa.LargeBinary(), nullable=False),
|
|
sa.Column('parent', sa.LargeBinary(), nullable=False),
|
|
sa.Column('data', postgresql.JSONB(astext_type=sa.Text()), nullable=False),
|
|
sa.PrimaryKeyConstraint('chain', 'height', 'hash')
|
|
)
|
|
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('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('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(name='transactionjobstate'), nullable=False),
|
|
sa.Column('state', sa.Enum('Requested', 'Signed', 'Sent', 'Mined', name='transactionjobstate'), nullable=False),
|
|
sa.Column('request', dexorder.database.column_types._DataclassDict(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')
|
|
)
|
|
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('Open', 'Canceled', 'Filled', 'Expired', 'Underfunded', name='swaporderstate'), nullable=False),
|
|
sa.PrimaryKeyConstraint('chain', 'vault', 'order_index')
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_table('orderindex')
|
|
op.drop_table('seriesset')
|
|
op.drop_table('seriesdict')
|
|
op.drop_table('keyvalue')
|
|
op.drop_table('block')
|
|
op.drop_table('tx')
|
|
op.drop_table('transactionjob')
|
|
op.execute('drop type swaporderstate') # enum type
|
|
op.execute('drop type transactionjobstate') # enum type
|