mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
refactor: rename Ai* database identifiers to AI* (AIGOV-369) (#26327)
Adds `ai` to sqlc's `gen.go.initialisms` in `coderd/database/sqlc.yaml` so the generated DB code follows Go's initialism convention. Adds the matching `ai` -> `AI` case to the dbgen PascalCase helper (`scripts/dbgen/main.go`) so the corresponding `dbmem` / mock identifiers stay in sync. `make gen` regenerates the rest; hand-written call sites that consume DB-generated identifiers (`enterprise/audit/table.go`, `coderd/database/modelmethods.go`, `enterprise/coderd/aigatewaykeys.go`, `coderd/database/dbauthz/*`, etc.) are updated to match. Scope is deliberately limited to the database layer: - `coderd/rbac/*` (resource and scope generators) is untouched — `ResourceAi*` / `ScopeAi*` constants stay on main's casing. - `codersdk/*` (Go SDK) is untouched — `codersdk.ResourceAi*` / `codersdk.APIKeyScopeAi*` constants stay on main's casing, so external Go SDK consumers see no source-level break. - `Aibridge*` identifiers (one SQL token `aibridge`, not `ai_bridge`) are out of scope. On-the-wire values are unchanged: enum strings, RBAC resource type strings, API key scope strings, and JSON tags all stay the same. The HTTP/JSON surface is unaffected. Refs: [AIGOV-369](https://linear.app/codercom/issue/AIGOV-369/change-ai-references-in-coderddatabasemodelsgo-to-ai) 🤖 Generated with [Coder Agents](https://coder.com)
This commit is contained in:
@@ -37,7 +37,7 @@ func TestBackfillBedrockProviderTypeEncryptedSettings(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
provider := dbgen.AIProvider(t, cryptDB, database.AIProvider{
|
||||
Type: database.AiProviderTypeAnthropic,
|
||||
Type: database.AIProviderTypeAnthropic,
|
||||
Settings: sql.NullString{String: string(rawSettings), Valid: true},
|
||||
})
|
||||
|
||||
@@ -46,6 +46,6 @@ func TestBackfillBedrockProviderTypeEncryptedSettings(t *testing.T) {
|
||||
// Verify via raw DB: type is not encrypted so it is directly readable.
|
||||
row, err := rawDB.GetAIProviderByName(ctx, provider.Name)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, database.AiProviderTypeBedrock, row.Type, "encrypted legacy row must be promoted")
|
||||
require.Equal(t, database.AIProviderTypeBedrock, row.Type, "encrypted legacy row must be promoted")
|
||||
require.True(t, row.SettingsKeyID.Valid, "settings must remain encrypted after backfill")
|
||||
}
|
||||
|
||||
@@ -575,7 +575,7 @@ func (api *API) upsertGroupAIBudget(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx = r.Context()
|
||||
group = httpmw.GroupParam(r)
|
||||
auditor = api.AGPL.Auditor.Load()
|
||||
aReq, commitAudit = audit.InitRequest[database.AuditableGroupAiBudget](rw, &audit.RequestParams{
|
||||
aReq, commitAudit = audit.InitRequest[database.AuditableGroupAIBudget](rw, &audit.RequestParams{
|
||||
Audit: *auditor,
|
||||
Log: api.Logger,
|
||||
Request: r,
|
||||
@@ -630,7 +630,7 @@ func (api *API) deleteGroupAIBudget(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx = r.Context()
|
||||
group = httpmw.GroupParam(r)
|
||||
auditor = api.AGPL.Auditor.Load()
|
||||
aReq, commitAudit = audit.InitRequest[database.AuditableGroupAiBudget](rw, &audit.RequestParams{
|
||||
aReq, commitAudit = audit.InitRequest[database.AuditableGroupAIBudget](rw, &audit.RequestParams{
|
||||
Audit: *auditor,
|
||||
Log: api.Logger,
|
||||
Request: r,
|
||||
@@ -714,7 +714,7 @@ func (api *API) upsertUserAIBudgetOverride(rw http.ResponseWriter, r *http.Reque
|
||||
}
|
||||
|
||||
auditor := api.AGPL.Auditor.Load()
|
||||
aReq, commitAudit := audit.InitRequest[database.AuditableUserAiBudgetOverride](rw, &audit.RequestParams{
|
||||
aReq, commitAudit := audit.InitRequest[database.AuditableUserAIBudgetOverride](rw, &audit.RequestParams{
|
||||
Audit: *auditor,
|
||||
Log: api.Logger,
|
||||
Request: r,
|
||||
@@ -809,7 +809,7 @@ func (api *API) deleteUserAIBudgetOverride(rw http.ResponseWriter, r *http.Reque
|
||||
}
|
||||
|
||||
auditor := api.AGPL.Auditor.Load()
|
||||
aReq, commitAudit := audit.InitRequest[database.AuditableUserAiBudgetOverride](rw, &audit.RequestParams{
|
||||
aReq, commitAudit := audit.InitRequest[database.AuditableUserAIBudgetOverride](rw, &audit.RequestParams{
|
||||
Audit: *auditor,
|
||||
Log: api.Logger,
|
||||
Request: r,
|
||||
|
||||
@@ -2208,7 +2208,7 @@ func TestGroupAIBudget(t *testing.T) {
|
||||
rows, err := db.GetAuditLogsOffset(
|
||||
ctx,
|
||||
database.GetAuditLogsOffsetParams{
|
||||
ResourceType: string(database.ResourceTypeGroupAiBudget),
|
||||
ResourceType: string(database.ResourceTypeGroupAIBudget),
|
||||
LimitOpt: 10,
|
||||
},
|
||||
)
|
||||
@@ -2220,7 +2220,7 @@ func TestGroupAIBudget(t *testing.T) {
|
||||
|
||||
require.Equal(t, database.AuditActionWrite, upsertLog.Action)
|
||||
require.Equal(t, group.ID, upsertLog.ResourceID)
|
||||
require.Equal(t, database.ResourceTypeGroupAiBudget, upsertLog.ResourceType)
|
||||
require.Equal(t, database.ResourceTypeGroupAIBudget, upsertLog.ResourceType)
|
||||
require.Equal(t, group.Name, upsertLog.ResourceTarget)
|
||||
require.Equal(t, owner.OrganizationID, upsertLog.OrganizationID)
|
||||
|
||||
@@ -2238,7 +2238,7 @@ func TestGroupAIBudget(t *testing.T) {
|
||||
|
||||
require.Equal(t, database.AuditActionDelete, deleteLog.Action)
|
||||
require.Equal(t, group.ID, deleteLog.ResourceID)
|
||||
require.Equal(t, database.ResourceTypeGroupAiBudget, deleteLog.ResourceType)
|
||||
require.Equal(t, database.ResourceTypeGroupAIBudget, deleteLog.ResourceType)
|
||||
require.Equal(t, group.Name, deleteLog.ResourceTarget)
|
||||
require.Equal(t, owner.OrganizationID, deleteLog.OrganizationID)
|
||||
|
||||
@@ -2495,7 +2495,7 @@ func TestUserAIBudgetOverride(t *testing.T) {
|
||||
rows, err := db.GetAuditLogsOffset(
|
||||
ctx,
|
||||
database.GetAuditLogsOffsetParams{
|
||||
ResourceType: string(database.ResourceTypeUserAiBudgetOverride),
|
||||
ResourceType: string(database.ResourceTypeUserAIBudgetOverride),
|
||||
LimitOpt: 10,
|
||||
},
|
||||
)
|
||||
@@ -2507,7 +2507,7 @@ func TestUserAIBudgetOverride(t *testing.T) {
|
||||
|
||||
require.Equal(t, database.AuditActionWrite, upsertLog.Action)
|
||||
require.Equal(t, targetUser.ID, upsertLog.ResourceID)
|
||||
require.Equal(t, database.ResourceTypeUserAiBudgetOverride, upsertLog.ResourceType)
|
||||
require.Equal(t, database.ResourceTypeUserAIBudgetOverride, upsertLog.ResourceType)
|
||||
require.Equal(t, targetUser.Username, upsertLog.ResourceTarget)
|
||||
require.Equal(t, owner.OrganizationID, upsertLog.OrganizationID)
|
||||
|
||||
@@ -2531,7 +2531,7 @@ func TestUserAIBudgetOverride(t *testing.T) {
|
||||
|
||||
require.Equal(t, database.AuditActionDelete, deleteLog.Action)
|
||||
require.Equal(t, targetUser.ID, deleteLog.ResourceID)
|
||||
require.Equal(t, database.ResourceTypeUserAiBudgetOverride, deleteLog.ResourceType)
|
||||
require.Equal(t, database.ResourceTypeUserAIBudgetOverride, deleteLog.ResourceType)
|
||||
require.Equal(t, targetUser.Username, deleteLog.ResourceTarget)
|
||||
require.Equal(t, owner.OrganizationID, deleteLog.OrganizationID)
|
||||
|
||||
@@ -2564,7 +2564,7 @@ func TestUserAIBudgetOverride(t *testing.T) {
|
||||
rows, err := db.GetAuditLogsOffset(
|
||||
ctx,
|
||||
database.GetAuditLogsOffsetParams{
|
||||
ResourceType: string(database.ResourceTypeUserAiBudgetOverride),
|
||||
ResourceType: string(database.ResourceTypeUserAIBudgetOverride),
|
||||
LimitOpt: 10,
|
||||
},
|
||||
)
|
||||
@@ -2616,7 +2616,7 @@ func TestUserAIBudgetOverride(t *testing.T) {
|
||||
rows, err := db.GetAuditLogsOffset(
|
||||
ctx,
|
||||
database.GetAuditLogsOffsetParams{
|
||||
ResourceType: string(database.ResourceTypeUserAiBudgetOverride),
|
||||
ResourceType: string(database.ResourceTypeUserAIBudgetOverride),
|
||||
LimitOpt: 10,
|
||||
},
|
||||
)
|
||||
@@ -2673,7 +2673,7 @@ func TestUserAIBudgetOverride(t *testing.T) {
|
||||
rows, err := db.GetAuditLogsOffset(
|
||||
ctx,
|
||||
database.GetAuditLogsOffsetParams{
|
||||
ResourceType: string(database.ResourceTypeUserAiBudgetOverride),
|
||||
ResourceType: string(database.ResourceTypeUserAIBudgetOverride),
|
||||
LimitOpt: 10,
|
||||
},
|
||||
)
|
||||
|
||||
@@ -87,14 +87,14 @@ func writeKeyInsertError(ctx context.Context, rw http.ResponseWriter, err error)
|
||||
switch {
|
||||
case httpapi.IsUnauthorizedError(err):
|
||||
httpapi.Forbidden(rw)
|
||||
case database.IsCheckViolation(err, database.CheckAiGatewayKeysNameCheck):
|
||||
case database.IsCheckViolation(err, database.CheckAIGatewayKeysNameCheck):
|
||||
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
|
||||
Message: "Invalid key name.",
|
||||
Validations: []codersdk.ValidationError{
|
||||
{Field: "name", Detail: nameFormatDetail},
|
||||
},
|
||||
})
|
||||
case database.IsUniqueViolation(err, database.UniqueAiGatewayKeysNameIndex):
|
||||
case database.IsUniqueViolation(err, database.UniqueAIGatewayKeysNameIndex):
|
||||
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
|
||||
Message: "Key name must be unique.",
|
||||
Validations: []codersdk.ValidationError{
|
||||
|
||||
Reference in New Issue
Block a user