feat(store): Alembic scaffolding + initial ix_jobs migration #18

Merged
goldstein merged 1 commit from feat/alembic-init into main 2026-04-18 09:37:38 +00:00
Owner

Lands the async-friendly Alembic env (NullPool, reads IX_POSTGRES_URL), the hand-written 001 migration matching spec §4 exactly, the SQLAlchemy 2.0 ORM mapping, and a lazy engine/session factory.

Chunk 3 Task 3.1. Integration tests land in Task 3.3 once the JobsRepo is in.

Note: Forgejo Actions trigger is still flaky; local verification is the gate (uv run pytest tests/unit + alembic upgrade head/downgrade base against a live postgres:16 both green).

Lands the async-friendly Alembic env (NullPool, reads IX_POSTGRES_URL), the hand-written 001 migration matching spec §4 exactly, the SQLAlchemy 2.0 ORM mapping, and a lazy engine/session factory. Chunk 3 Task 3.1. Integration tests land in Task 3.3 once the JobsRepo is in. Note: Forgejo Actions trigger is still flaky; local verification is the gate (`uv run pytest tests/unit` + `alembic upgrade head/downgrade base` against a live postgres:16 both green).
goldstein added 1 commit 2026-04-18 09:37:33 +00:00
feat(store): Alembic scaffolding + initial ix_jobs migration (spec §4)
All checks were successful
tests / test (push) Successful in 1m15s
tests / test (pull_request) Successful in 1m2s
1c60c30084
Lands the async-friendly Alembic env (NullPool, reads IX_POSTGRES_URL), the
hand-written 001 migration matching the spec's table layout exactly
(CHECK on status, partial index on pending rows, UNIQUE on
(client_id, request_id)), the SQLAlchemy 2.0 ORM mapping, and a lazy
engine/session factory. The factory reads the URL through ix.config when
available; Task 3.2 makes that the only path.

Smoke-tested: alembic upgrade head + downgrade base against a live
postgres:16 produce the expected table shape and tear down cleanly.
Unit tests assert the migration source contains every required column/index
so the migration can't drift from spec at import time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
goldstein merged commit dc6d28bda1 into main 2026-04-18 09:37:38 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: goldstein/infoxtractor#18
No description provided.