51 lines
1.3 KiB
Bash
51 lines
1.3 KiB
Bash
cat > patch_alembic_template.sh <<'BASH'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
SERVICES=(auth profiles match chat payments)
|
|
|
|
for s in "${SERVICES[@]}"; do
|
|
TPL="services/$s/alembic/script.py.mako"
|
|
mkdir -p "services/$s/alembic"
|
|
cat > "$TPL" <<'MAKO'
|
|
"""${message}
|
|
|
|
Revision ID: ${up_revision}
|
|
Revises: ${down_revision | comma,n}
|
|
Create Date: ${create_date}
|
|
"""
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = ${repr(up_revision)}
|
|
down_revision = ${repr(down_revision)}
|
|
branch_labels = ${repr(branch_labels)}
|
|
depends_on = ${repr(depends_on)}
|
|
|
|
def upgrade():
|
|
${upgrades if upgrades else "pass"}
|
|
|
|
|
|
def downgrade():
|
|
${downgrades if downgrades else "pass"}
|
|
MAKO
|
|
echo "[ok] template updated: $TPL"
|
|
done
|
|
|
|
# Убедимся, что в env.py импортированы модели (для автогенерации)
|
|
for s in "${SERVICES[@]}"; do
|
|
ENV="services/$s/alembic/env.py"
|
|
if ! grep -q "from app import models" "$ENV"; then
|
|
awk '
|
|
/from app\.db\.session import Base/ && !x {print; print "from app import models # noqa: F401"; x=1; next}
|
|
{print}
|
|
' "$ENV" > "$ENV.tmp" && mv "$ENV.tmp" "$ENV"
|
|
echo "[ok] added 'from app import models' to $ENV"
|
|
fi
|
|
done
|
|
BASH
|
|
|
|
chmod +x patch_alembic_template.sh
|
|
./patch_alembic_template.sh
|