mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
The provider type already lives authoritatively in ai_providers.type, reachable on every active row through ai_provider_id, which the chat_model_configs_ai_provider_required_when_active CHECK makes mandatory. The stored provider string was a denormalized copy the system kept in sync with a startup backfill and no longer needs. Every surface now derives provider type from the linked ai_providers row. Telemetry is the one exception: it keeps emitting provider, now sourced from ai_providers.type via a JOIN, so the BigQuery column and the Nexus dashboards that read it are unaffected. The experimental HTTP/SDK response drops provider and makes ai_provider_id required, since those endpoints return only active configs; consumers resolve provider type from ai_provider_id and the AI providers listing. This ships in a single release with no compatibility window: production reads the table via SELECT *, so a pre-drop binary fails config reads the moment the column is gone. Operators must scale to zero before upgrading, and there is no rollback. Closes CODAGT-599
14 lines
505 B
SQL
14 lines
505 B
SQL
ALTER TABLE chat_model_configs ADD COLUMN provider text;
|
|
|
|
UPDATE chat_model_configs cmc
|
|
SET provider = ap.type::text
|
|
FROM ai_providers ap
|
|
WHERE ap.id = cmc.ai_provider_id;
|
|
|
|
UPDATE chat_model_configs SET provider = '' WHERE provider IS NULL;
|
|
|
|
ALTER TABLE chat_model_configs ALTER COLUMN provider SET NOT NULL;
|
|
|
|
CREATE INDEX idx_chat_model_configs_provider ON chat_model_configs USING btree (provider);
|
|
CREATE INDEX idx_chat_model_configs_provider_model ON chat_model_configs USING btree (provider, model);
|