Submatter/plans/Plan-automation-foundation/Epic-model-provider-registry/Task-db-model-providers-migration.md
Randall Stillwell f04122fd04 feat(database): add model_providers and role_model_routes tables
Adds workspace-scoped provider registry schema, relations, migration 0010,
and seedDefaultRoleRoutes() for pipeline defaults when aliases exist.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 14:00:48 -05:00

60 lines
1.8 KiB
Markdown

---
kind: task
slug: db-model-providers-migration
title: Drizzle schema and migration for model_providers and role_model_routes
plan_slug: automation-foundation
epic_slug: model-provider-registry
status: done
priority: P1
tenant_id: global
owner: unassigned
cursor_todo_id: null
updated_at: "2026-07-03"
agent_prompt: |
Read docs/adr-model-routing.md and packages/shared model-routing types from
Task-shared-schemas-resolve-model. packages/database only. Generate migration
with pnpm db:generate — do not hand-edit SQL. claim_task before work.
---
# Task summary
Add `model_providers` and `role_model_routes` tables with workspace scoping and indexes per the ADR.
## Description
### Schema (`packages/database/src/schema/`)
- `model_providers.ts` — columns from ADR; unique `(workspace_id, alias)`
- `role_model_routes.ts` — FK to `model_providers`; unique `(workspace_id, role_id)`
- Re-export from `schema/index.ts`; add relations if needed
### Migration
- `pnpm db:generate` from repo root after schema edit
- Commit generated SQL under `packages/database/migrations/`
### Optional seed helper
- `seedDefaultRoleRoutes(workspaceId)` in database package or web server — inserts pipeline default role_ids pointing at aliases **only if** matching aliases exist (no auto-create of providers)
## Subtasks
- [x] Define Drizzle tables
- [x] Generate and commit migration
- [x] Verify `workspace_id` index on both tables
## Estimation
S
## Acceptance criteria
- [x] Migration applies cleanly with `pnpm db:migrate`
- [x] Every query example in epic doc filters by `workspace_id`
- [x] Types align with `packages/shared` zod schemas
## Links
- Epic: `./Epic-model-provider-registry.md`
- ADR: `../../../docs/adr-model-routing.md`
- Depends on: `Task-shared-schemas-resolve-model.md`