krz/hutch-stats

Server-side utility for calculating contributions for sourcehut users. contributions server sourcehut stats

Commit bdbc11e860

bdbc11e8609b2a40d25b08b5baef17ce7201df77

parent: 84330037cc

Verified · cmc

cmc <hello@cleberg.net> · 2026-04-11 17:59 UTC

fix: run alembic migrations against DATABASE_URL in containers

Layout: unified · split

alembic/env.py +5
@@ -1,6 +1,7 @@
11from __future__ import annotations
22
33from logging.config import fileConfig
4import os
45
56from alembic import context
67from sqlalchemy import engine_from_config, pool
@@ -18,6 +19,10 @@ target_metadata = Base.metadata
1819
1920
2021def get_database_url() -> str:
22 env_database_url = os.getenv("DATABASE_URL")
23 if env_database_url:
24 return env_database_url
25
2126 configured_url = config.get_main_option("sqlalchemy.url")
2227 if configured_url:
2328 return configured_url
tests/test_migrations.py +13
@@ -115,3 +115,16 @@ def test_alembic_upgrade_adopts_legacy_schema(tmp_path) -> None:
115115 assert columns["actor"]["nullable"] is False
116116 assert "uq_tracked_repository_service_actor_name" in unique_constraints
117117 assert actor == Settings().default_actor
118
119
120def test_alembic_prefers_database_url_from_environment(tmp_path, monkeypatch) -> None:
121 database_path = tmp_path / "env-selected.db"
122 database_url = f"sqlite:///{database_path}"
123 config = Config(str(Path(__file__).resolve().parent.parent / "alembic.ini"))
124 config.set_main_option("script_location", str(Path(__file__).resolve().parent.parent / "alembic"))
125 monkeypatch.setenv("DATABASE_URL", database_url)
126
127 command.upgrade(config, "head")
128
129 inspector = inspect(create_engine(database_url))
130 assert "actor_aliases" in inspector.get_table_names()