2023-08-10 15:42:08 +00:00
|
|
|
"""Request ID decimal column
|
2023-08-10 10:40:46 +00:00
|
|
|
|
|
|
|
Revision ID: 040f2dfde5a5
|
|
|
|
Revises: b4257b10daaf
|
|
|
|
Create Date: 2023-08-10 08:58:22.052336
|
|
|
|
|
|
|
|
"""
|
|
|
|
from alembic import op
|
|
|
|
import sqlalchemy as sa
|
|
|
|
from sqlalchemy.dialects import postgresql
|
|
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
|
|
revision = '040f2dfde5a5'
|
|
|
|
down_revision = 'b4257b10daaf'
|
|
|
|
branch_labels = None
|
|
|
|
depends_on = None
|
|
|
|
|
|
|
|
|
|
|
|
def upgrade():
|
|
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
2023-08-10 15:42:08 +00:00
|
|
|
op.add_column('call_requests', sa.Column('request_id', sa.DECIMAL(), nullable=True))
|
2023-08-10 10:40:46 +00:00
|
|
|
op.create_index(op.f('ix_call_requests_request_id'), 'call_requests', ['request_id'], unique=False)
|
|
|
|
op.create_unique_constraint(op.f('uq_call_requests_registered_contract_id'), 'call_requests', ['registered_contract_id', 'request_id'])
|
|
|
|
|
|
|
|
# Manual
|
|
|
|
# Fetch IDs of duplicates for 'dropper-v0.2.0' call_request_type and delete it
|
|
|
|
op.execute("""WITH Duplicates AS (
|
|
|
|
SELECT
|
|
|
|
id,
|
|
|
|
registered_contract_id,
|
|
|
|
call_request_type_name,
|
|
|
|
parameters->'requestID' AS request_id,
|
|
|
|
created_at,
|
|
|
|
ROW_NUMBER() OVER (
|
|
|
|
PARTITION BY
|
|
|
|
registered_contract_id,
|
|
|
|
call_request_type_name,
|
|
|
|
parameters->'requestID'
|
|
|
|
ORDER BY created_at ASC
|
|
|
|
) AS row_num
|
|
|
|
FROM call_requests
|
|
|
|
WHERE call_request_type_name = 'dropper-v0.2.0'
|
|
|
|
),
|
|
|
|
DeleteDuplicates AS (
|
|
|
|
SELECT id
|
|
|
|
FROM
|
|
|
|
Duplicates
|
|
|
|
WHERE
|
|
|
|
row_num < (
|
|
|
|
SELECT COUNT(*) FROM Duplicates d2
|
|
|
|
WHERE d2.registered_contract_id = Duplicates.registered_contract_id
|
|
|
|
AND d2.call_request_type_name = Duplicates.call_request_type_name
|
|
|
|
AND d2.request_id = Duplicates.request_id
|
|
|
|
)
|
|
|
|
)
|
|
|
|
DELETE FROM call_requests WHERE id IN (SELECT id FROM DeleteDuplicates);""")
|
|
|
|
|
|
|
|
# Fulfill not empty requestID values
|
2023-08-10 15:42:08 +00:00
|
|
|
op.execute("UPDATE call_requests SET request_id = CAST(parameters->>'requestID' AS DECIMAL) WHERE parameters->>'requestID' IS NOT NULL;")
|
2023-08-10 10:40:46 +00:00
|
|
|
# Fulfill raw types with random requestID
|
|
|
|
op.execute("UPDATE call_requests SET request_id = FLOOR(RANDOM()* 120500600 + 120400600) WHERE parameters->>'requestID' IS NULL;")
|
|
|
|
op.alter_column("call_requests", "request_id", nullable=False)
|
|
|
|
|
|
|
|
# Other
|
2023-08-10 15:55:27 +00:00
|
|
|
op.create_unique_constraint(op.f('uq_blockchains_id'), 'blockchains', ['id'])
|
|
|
|
op.create_unique_constraint(op.f('uq_call_request_types_name'), 'call_request_types', ['name'])
|
|
|
|
op.create_unique_constraint(op.f('uq_metatx_requesters_id'), 'metatx_requesters', ['id'])
|
2023-08-10 10:40:46 +00:00
|
|
|
# ### end Alembic commands ###
|
|
|
|
|
|
|
|
|
|
|
|
def downgrade():
|
|
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
|
|
op.drop_index(op.f('ix_call_requests_request_id'), table_name='call_requests')
|
|
|
|
op.drop_column('call_requests', 'request_id')
|
|
|
|
# ### end Alembic commands ###
|