109 lines
3.1 KiB
Python
109 lines
3.1 KiB
Python
"""Seed versioned technical settings and OTP template placeholder.
|
|
|
|
Revision ID: 0002_seed
|
|
"""
|
|
|
|
import uuid
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision = "0002_seed"
|
|
down_revision = "0001_initial"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
TEMPLATE_ID = uuid.UUID("5ac2a77e-590c-4b24-87d8-baa0f1240cd1")
|
|
|
|
|
|
def upgrade() -> None:
|
|
bind = op.get_bind()
|
|
bind.execute(
|
|
sa.text(
|
|
"""
|
|
INSERT INTO sms.sms_template (
|
|
id, code, channel, locale, version, body_template, placeholders,
|
|
sender_name, max_parts, is_active, approved_at, created_by
|
|
) VALUES (
|
|
:id, 'auth_otp', 'SMS', 'ru', 1,
|
|
'Код входа в HAN Chat: {code}. Действителен {ttl_min} мин.',
|
|
'["code","ttl_min"]'::jsonb, NULL, 1, true, NULL, 'migration'
|
|
)
|
|
ON CONFLICT (code, channel, locale, version) DO NOTHING
|
|
"""
|
|
),
|
|
{"id": TEMPLATE_ID},
|
|
)
|
|
settings = (
|
|
(
|
|
"provider.idgtl.default_sender_name",
|
|
'"__SET_ME_AFTER_PROVIDER_APPROVAL__"',
|
|
"string",
|
|
"Provider-approved default sender name",
|
|
),
|
|
(
|
|
"provider.idgtl.connect_timeout_ms",
|
|
"3000",
|
|
"integer",
|
|
"Direct connection timeout in milliseconds",
|
|
),
|
|
(
|
|
"provider.idgtl.request_timeout_ms",
|
|
"70000",
|
|
"integer",
|
|
"Direct total request timeout in milliseconds",
|
|
),
|
|
(
|
|
"provider.idgtl.callback_enabled",
|
|
"true",
|
|
"boolean",
|
|
"Include delivery callback in provider requests",
|
|
),
|
|
(
|
|
"worker.poll_interval_ms",
|
|
"500",
|
|
"integer",
|
|
"Queue polling interval in milliseconds",
|
|
),
|
|
(
|
|
"worker.lease_seconds",
|
|
"90",
|
|
"integer",
|
|
"Exclusive provider-call lease duration",
|
|
),
|
|
)
|
|
for key, value, value_type, description in settings:
|
|
bind.execute(
|
|
sa.text(
|
|
"""
|
|
INSERT INTO sms.sms_setting (
|
|
setting_key, setting_value, value_type, description
|
|
) VALUES (:key, CAST(:value AS jsonb), :value_type, :description)
|
|
ON CONFLICT (setting_key) DO NOTHING
|
|
"""
|
|
),
|
|
{
|
|
"key": key,
|
|
"value": value,
|
|
"value_type": value_type,
|
|
"description": description,
|
|
},
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.execute(sa.text("DELETE FROM sms.sms_template WHERE id = :id").bindparams(id=TEMPLATE_ID))
|
|
op.execute(
|
|
"""
|
|
DELETE FROM sms.sms_setting
|
|
WHERE setting_key IN (
|
|
'provider.idgtl.default_sender_name',
|
|
'provider.idgtl.connect_timeout_ms',
|
|
'provider.idgtl.request_timeout_ms',
|
|
'provider.idgtl.callback_enabled',
|
|
'worker.poll_interval_ms',
|
|
'worker.lease_seconds'
|
|
)
|
|
"""
|
|
)
|