"""Seed runtime OTP settings. Revision ID: 0005_otp_settings Revises: 0004_device_otp Create Date: 2026-07-22 """ from collections.abc import Sequence from alembic import op revision: str = "0005_otp_settings" down_revision: str | None = "0004_device_otp" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.execute( """ INSERT INTO han_app.app_settings (setting_key, setting_value, value_type, is_public, description, record_status, updated_at) VALUES ('otp.phone.code_length', '6', 'integer', false, 'Length of the numeric phone OTP', 'A', now()), ('otp.phone.ttl_seconds', '60', 'integer', false, 'Phone OTP lifetime from durable order time', 'A', now()), ('otp.phone.sms_order_timeout_ms', '3000', 'integer', false, 'Keycloak timeout for durable SMS order creation', 'A', now()) ON CONFLICT (setting_key) DO NOTHING """ ) def downgrade() -> None: raise RuntimeError("OTP runtime settings migration is forward-only")