Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stamp alembic head when recreating tables #521

Merged
merged 3 commits into from
Feb 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions backend/bracket/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
from starlette.responses import JSONResponse, Response
from starlette.staticfiles import StaticFiles

from alembic import command
from alembic.config import Config
from bracket.config import Environment, config, environment, init_sentry
from bracket.cronjobs.scheduling import start_cronjobs
from bracket.database import database
Expand All @@ -29,26 +27,21 @@
tournaments,
users,
)
from bracket.utils.alembic import alembic_run_migrations
from bracket.utils.asyncio import AsyncioTasksManager
from bracket.utils.db_init import init_db_when_empty
from bracket.utils.logging import logger

init_sentry()


def run_migrations() -> None:
logger.info("Running migrations")
alembic_cfg = Config("alembic.ini")
command.upgrade(alembic_cfg, "head")


@asynccontextmanager
async def lifespan(_: FastAPI) -> AsyncIterator[None]:
await database.connect()
await init_db_when_empty()

if config.auto_run_migrations and environment is not Environment.CI:
run_migrations()
alembic_run_migrations()

Check warning on line 44 in backend/bracket/app.py

View check run for this annotation

Codecov / codecov/patch

backend/bracket/app.py#L44

Added line #L44 was not covered by tests

if environment is Environment.PRODUCTION:
start_cronjobs()
Expand Down
17 changes: 17 additions & 0 deletions backend/bracket/utils/alembic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from alembic import command
from alembic.config import Config
from bracket.utils.logging import logger


def get_alembic_config() -> Config:
return Config("alembic.ini")


def alembic_run_migrations() -> None:
logger.info("Running migrations")
command.upgrade(get_alembic_config(), "head")

Check warning on line 12 in backend/bracket/utils/alembic.py

View check run for this annotation

Codecov / codecov/patch

backend/bracket/utils/alembic.py#L11-L12

Added lines #L11 - L12 were not covered by tests


def alembic_stamp_head() -> None:
logger.info("Overwriting current version to be the latest revision (head)")
command.stamp(get_alembic_config(), "head")
3 changes: 3 additions & 0 deletions backend/bracket/utils/db_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
from bracket.sql.stages import get_full_tournament_details
from bracket.sql.tournaments import sql_get_tournament
from bracket.sql.users import create_user, get_user
from bracket.utils.alembic import alembic_stamp_head
from bracket.utils.db import insert_generic
from bracket.utils.dummy_records import (
DUMMY_CLUB,
Expand Down Expand Up @@ -116,6 +117,7 @@
):
logger.warning("Empty db detected, creating tables...")
metadata.create_all(engine)
alembic_stamp_head()

Check warning on line 120 in backend/bracket/utils/db_init.py

View check run for this annotation

Codecov / codecov/patch

backend/bracket/utils/db_init.py#L120

Added line #L120 was not covered by tests

logger.warning("Empty db detected, creating admin user...")
return await create_admin_user()
Expand All @@ -133,6 +135,7 @@
metadata.drop_all(engine)
metadata.create_all(engine)
real_user_id = await init_db_when_empty()
alembic_stamp_head()

table_lookup: dict[type, Table] = {
User: users,
Expand Down
Loading