Skip to content

Add setup_db.py to provision per environment database and role#105

Merged
kou merged 2 commits into
enactic:mainfrom
abetomo:setup_db_user
Jul 3, 2026
Merged

Add setup_db.py to provision per environment database and role#105
kou merged 2 commits into
enactic:mainfrom
abetomo:setup_db_user

Conversation

@abetomo

@abetomo abetomo commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Used to set up this environment's database on RDS.

Used to set up this environment's database on RDS.
Copilot AI review requested due to automatic review settings July 3, 2026 02:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new provisioning script to create (or ensure) an environment-specific Postgres role and database on a shared RDS instance, and includes it in the production container image so it can be executed in deployed environments.

Changes:

  • Add scripts/setup_db.py to create the per-environment role/database and apply basic privileges.
  • Update app/production.Dockerfile to copy the new setup script into the image alongside other operational scripts.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
scripts/setup_db.py New Postgres provisioning script for per-environment role/database creation and permissions.
app/production.Dockerfile Ensures the new provisioning script is present in the production image.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/setup_db.py
Comment thread scripts/setup_db.py
Comment on lines +49 to +68
cursor.execute(sql.SQL("GRANT {} TO CURRENT_USER").format(sql.Identifier(role)))
cursor.execute("SELECT 1 FROM pg_database WHERE datname = %s", (db_name,))
if not cursor.fetchone():
cursor.execute(
sql.SQL("CREATE DATABASE {} OWNER {}").format(
sql.Identifier(db_name),
sql.Identifier(role),
)
)
cursor.execute(
sql.SQL("REVOKE CONNECT ON DATABASE {} FROM PUBLIC").format(
sql.Identifier(db_name)
)
)
cursor.execute(
sql.SQL("GRANT CONNECT ON DATABASE {} TO {}").format(
sql.Identifier(db_name),
sql.Identifier(role),
)
)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@kou kou merged commit 6ecff9c into enactic:main Jul 3, 2026
2 checks passed
@abetomo abetomo deleted the setup_db_user branch July 3, 2026 02:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants