CI and images / lint (push) Successful in 1s
CI and images / extension-version (push) Successful in 2s
CI and images / frontend-build (push) Successful in 21s
CI and images / extension-test (push) Successful in 23s
CI and images / backend-lint-and-test (push) Successful in 44s
CI and images / integration (push) Successful in 2m21s
CI and images / sign-extension (push) Successful in 2s
CI and images / build-agent (push) Successful in 4s
CI and images / build-web (push) Successful in 2m8s
CI and images / smoke-web (push) Successful in 48s
CI and images / promote (push) Successful in 2s
CI and images / refresh-dev (push) Skipped
CI and images / unattended-failure (push) Skipped
Two migrations both claimed revision 0118 on top of 0117, so alembic saw two heads and the upgrade refused to run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
"""import_settings: the off-site backup destination (an S3 bucket).
|
|
|
|
Address, bucket, access key and region are plain settings; the secret key is
|
|
stored sealed with the credential key. All empty means no destination is set
|
|
up, which is every existing install's state.
|
|
|
|
Revision ID: 0119
|
|
Revises: 0118
|
|
Create Date: 2026-11-06
|
|
|
|
"""
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision = "0119"
|
|
down_revision = "0118"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column("import_settings", sa.Column("backup_s3_endpoint", sa.Text(), nullable=True))
|
|
op.add_column(
|
|
"import_settings", sa.Column("backup_s3_bucket", sa.String(255), nullable=True),
|
|
)
|
|
op.add_column("import_settings", sa.Column("backup_s3_access_key", sa.Text(), nullable=True))
|
|
op.add_column(
|
|
"import_settings", sa.Column("backup_s3_secret_sealed", sa.Text(), nullable=True),
|
|
)
|
|
op.add_column(
|
|
"import_settings",
|
|
sa.Column(
|
|
"backup_s3_region", sa.String(64), nullable=False, server_default="us-east-1",
|
|
),
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
for column in (
|
|
"backup_s3_region", "backup_s3_secret_sealed", "backup_s3_access_key",
|
|
"backup_s3_bucket", "backup_s3_endpoint",
|
|
):
|
|
op.drop_column("import_settings", column)
|