{"record":{"id":"6396f19a8100143b","repo":"plandex-ai/plandex","slug":"error-creating-custom-provider-w","errorCode":null,"errorMessage":"error creating custom provider: %w","messagePattern":"error creating custom provider: %w","errorType":"http","errorClass":null,"httpStatus":500,"severity":"error","filePath":"app/server/handlers/models.go","lineNumber":299,"sourceCode":"\t}\n\n\tnumChanges := len(toUpsertCustomModels) + len(toUpsertCustomProviders) + len(toUpsertModelPacks) + len(toDeleteCustomModelIds) + len(toDeleteCustomProviderIds) + len(toDeleteModelPackIds)\n\tif numChanges == 0 {\n\t\tw.WriteHeader(http.StatusOK)\n\t\tlog.Println(\"No changes to custom models/providers/model packs\")\n\t\treturn\n\t}\n\n\terr = db.WithTx(r.Context(), \"create custom models/providers/model packs\", func(tx *sqlx.Tx) error {\n\t\tfor _, model := range toUpsertCustomModels {\n\t\t\tif err := db.UpsertCustomModel(tx, model); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error creating custom model: %w\", err)\n\t\t\t}\n\t\t}\n\n\t\tfor _, provider := range toUpsertCustomProviders {\n\t\t\tif err := db.UpsertCustomProvider(tx, provider); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error creating custom provider: %w\", err)\n\t\t\t}\n\t\t}\n\n\t\tfor _, modelPack := range toUpsertModelPacks {\n\t\t\tif err := db.UpsertModelPack(tx, modelPack); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error creating model pack: %w\", err)\n\t\t\t}\n\t\t}\n\n\t\tif len(toDeleteCustomModelIds) > 0 {\n\t\t\tif err := db.DeleteCustomModels(tx, auth.OrgId, toDeleteCustomModelIds); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error deleting custom models: %w\", err)\n\t\t\t}\n\t\t}\n\n\t\tif len(toDeleteCustomProviderIds) > 0 {\n\t\t\tif err := db.DeleteCustomProviders(tx, auth.OrgId, toDeleteCustomProviderIds); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error deleting custom providers: %w\", err)","sourceCodeStart":281,"sourceCodeEnd":317,"githubUrl":"https://github.com/plandex-ai/plandex/blob/e2d772072efadbe41d2946d97d79be55532dbab5/app/server/handlers/models.go#L281-L317","documentation":"Returned inside the db.WithTx transaction that persists custom models/providers/model packs, when db.UpsertCustomProvider fails to insert or update one of the submitted custom providers. The error propagates out of the transaction closure, aborting and rolling back the entire batch, so no partial set of custom model changes is committed. The underlying %w carries the database-layer failure (constraint violation, connection issue, etc.).","triggerScenarios":"Thrown at app/server/handlers/models.go:299 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the wrapped error for the failing provider","Verify provider name/id uniqueness for the org","Correct the payload and re-submit the sync request"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e2d772072efadbe41d2946d97d79be55532dbab5","analyzedAt":"2026-09-05T20:56:53.631Z","contentChangedAt":"2026-09-05T20:56:53.631Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}