ariadne/ariadne/migrate.py
2026-01-22 14:43:40 -03:00

54 lines
1.5 KiB
Python

from __future__ import annotations
from .db.database import Database, DatabaseConfig
from .settings import settings
PORTAL_MIGRATION_LOCK_ID = 982731
ARIADNE_MIGRATION_LOCK_ID = 982732
def _build_db(dsn: str, application_name: str) -> Database:
return Database(
dsn,
DatabaseConfig(
pool_min=settings.ariadne_db_pool_min,
pool_max=settings.ariadne_db_pool_max,
connect_timeout_sec=settings.ariadne_db_connect_timeout_sec,
lock_timeout_sec=settings.ariadne_db_lock_timeout_sec,
statement_timeout_sec=settings.ariadne_db_statement_timeout_sec,
idle_in_tx_timeout_sec=settings.ariadne_db_idle_in_tx_timeout_sec,
application_name=application_name,
),
)
def main() -> None:
if not settings.ariadne_run_migrations:
return
ariadne_db = _build_db(settings.ariadne_database_url, "ariadne_migrate")
try:
ariadne_db.migrate(
ARIADNE_MIGRATION_LOCK_ID,
include_ariadne_tables=True,
include_access_requests=False,
)
finally:
ariadne_db.close()
if settings.portal_database_url:
portal_db = _build_db(settings.portal_database_url, "ariadne_portal_migrate")
try:
portal_db.migrate(
PORTAL_MIGRATION_LOCK_ID,
include_ariadne_tables=False,
include_access_requests=True,
)
finally:
portal_db.close()
if __name__ == "__main__":
main()