/api/v1/health/ready interrogeait la base par un SELECT 1, qui ne distingue pas un PostgreSQL nu d'un PostgreSQL avec TimescaleDB. La sonde lit desormais pg_extension et repond 503 si l'extension manque, cas qui survient quand db/init n'a pas ete joue. - Premiere revision Alembic : aucune table, une garde qui refuse de s'appliquer sans l'extension. - Tests du chemin nominal et de l'extension absente, plus un test marque `integration` contre la vraie base. pytest ecarte ce marqueur par defaut pour que make check reste jouable sans Docker. - conftest recycle l'engine entre les tests : get_engine est lru_cache alors que pytest-asyncio ouvre une boucle par test, et les connexions asyncpg sont liees a leur boucle.
38 lines
898 B
Python
38 lines
898 B
Python
"""socle garde extension timescaledb
|
|
|
|
Revision ID: 5353c0e4f094
|
|
Revises:
|
|
Create Date: 2026-09-14 14:17:17.556764
|
|
|
|
Premiere revision du schema applicatif. Elle ne cree aucune table : elle etablit
|
|
alembic_version et refuse de s'appliquer sur une base ou l'extension TimescaleDB
|
|
manque, cas qui se produit quand db/init n'a pas ete joue.
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
from alembic import op
|
|
|
|
revision: str = "5353c0e4f094"
|
|
down_revision: str | Sequence[str] | None = None
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
GARDE_EXTENSION = """
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'timescaledb') THEN
|
|
RAISE EXCEPTION 'extension timescaledb absente, voir db/init et db/README.md';
|
|
END IF;
|
|
END
|
|
$$;
|
|
"""
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute(GARDE_EXTENSION)
|
|
|
|
|
|
def downgrade() -> None:
|
|
pass
|