mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
refactor(coderd): stop storing chat gateway key IDs and drop the columns (#27171)
> Mux is working on behalf of Mike. ## Summary Stop reading and writing the legacy `api_key_id` columns on chat messages and queued messages, and drop the columns in the same PR. Runtime AI Gateway attribution continues to use the per-user synthetic key introduced by #27170. With the columns gone, `sqlc` generates `database.ChatMessage` and `database.ChatQueuedMessage` without `api_key_id`, so no transitional query scaffolding is needed. Migration `000548` drops the `api_key_id` columns. #27170 already removed their foreign keys, so the down migration re-adds nullable text columns without constraints. Previous column values cannot be restored. Also moves the model config validation in `CreateChat` above the message-building work so a disabled or invalid model fails fast. On main this mattered more: the old ordering minted a synthetic API key before rejecting the request. Deploy note: replicas still running the previous release write `api_key_id` on insert, so chat message inserts on old replicas fail during the rolling window after the column drop. This was previously split across two PRs to avoid that window; per review feedback the split added more churn than it was worth for an experimental surface. Depends on #27170 (merged).
This commit is contained in:
@@ -122,20 +122,10 @@ func ChatMessage(t testing.TB, db database.Store, seed database.ChatMessage) dat
|
||||
content = string(seed.Content.RawMessage)
|
||||
}
|
||||
role := takeFirst(seed.Role, database.ChatMessageRoleUser)
|
||||
apiKeyID := seed.APIKeyID.String
|
||||
// Mint a real API key for user turns so the api_key_id foreign key is
|
||||
// satisfied. Without a creator we leave it empty, which the insert query
|
||||
// stores as NULL.
|
||||
if role == database.ChatMessageRoleUser && apiKeyID == "" &&
|
||||
seed.CreatedBy.Valid && seed.CreatedBy.UUID != uuid.Nil {
|
||||
key, _ := APIKey(t, db, database.APIKey{UserID: seed.CreatedBy.UUID})
|
||||
apiKeyID = key.ID
|
||||
}
|
||||
|
||||
msgs, err := db.InsertChatMessages(genCtx, database.InsertChatMessagesParams{
|
||||
ChatID: seed.ChatID,
|
||||
CreatedBy: []uuid.UUID{seed.CreatedBy.UUID},
|
||||
APIKeyID: []string{apiKeyID},
|
||||
ModelConfigID: []uuid.UUID{seed.ModelConfigID.UUID},
|
||||
ReasoningEffort: []string{string(seed.ReasoningEffort.ChatReasoningEffort)},
|
||||
Role: []database.ChatMessageRole{role},
|
||||
|
||||
Reference in New Issue
Block a user