b1c2d3e4f5a6_add_transfer_retry_fields.py 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. """add transfer retry fields
  2. Revision ID: b1c2d3e4f5a6
  3. Revises: a1b2c3d4e5f6
  4. Create Date: 2026-05-23 17:15:00.000000
  5. """
  6. from typing import Sequence, Union
  7. from alembic import op
  8. import sqlalchemy as sa
  9. # revision identifiers, used by Alembic.
  10. revision: str = 'b1c2d3e4f5a6'
  11. down_revision: Union[str, None] = 'a1b2c3d4e5f6'
  12. branch_labels: Union[str, Sequence[str], None] = None
  13. depends_on: Union[str, Sequence[str], None] = None
  14. def upgrade() -> None:
  15. op.add_column('pay_transfer', sa.Column('retry_count', sa.Integer(), nullable=False, server_default='0', comment='反查重试次数'))
  16. op.add_column('pay_transfer', sa.Column('next_retry_at', sa.DateTime(), nullable=True, comment='下次反查时间'))
  17. op.execute("""
  18. CREATE INDEX idx_transfer_retry ON pay_transfer (next_retry_at)
  19. WHERE status = 'DEALING' AND retry_count < 4
  20. """)
  21. def downgrade() -> None:
  22. op.execute("DROP INDEX IF EXISTS idx_transfer_retry")
  23. op.drop_column('pay_transfer', 'next_retry_at')
  24. op.drop_column('pay_transfer', 'retry_count')