diff --git a/coderd/database/dbmem/dbmem.go b/coderd/database/dbmem/dbmem.go index ada4174a31..8d68054a49 100644 --- a/coderd/database/dbmem/dbmem.go +++ b/coderd/database/dbmem/dbmem.go @@ -8150,6 +8150,7 @@ func (q *FakeQuerier) InsertPreset(_ context.Context, arg database.InsertPresetP defer q.mutex.Unlock() preset := database.TemplateVersionPreset{ + ID: uuid.New(), TemplateVersionID: arg.TemplateVersionID, Name: arg.Name, CreatedAt: arg.CreatedAt, @@ -8170,6 +8171,7 @@ func (q *FakeQuerier) InsertPresetParameters(_ context.Context, arg database.Ins presetParameters := make([]database.TemplateVersionPresetParameter, 0, len(arg.Names)) for i, v := range arg.Names { presetParameter := database.TemplateVersionPresetParameter{ + ID: uuid.New(), TemplateVersionPresetID: arg.TemplateVersionPresetID, Name: v, Value: arg.Values[i], diff --git a/coderd/provisionerdserver/provisionerdserver.go b/coderd/provisionerdserver/provisionerdserver.go index 0830b19f80..2a58aa421f 100644 --- a/coderd/provisionerdserver/provisionerdserver.go +++ b/coderd/provisionerdserver/provisionerdserver.go @@ -1828,28 +1828,34 @@ func InsertWorkspacePresetsAndParameters(ctx context.Context, logger slog.Logger } func InsertWorkspacePresetAndParameters(ctx context.Context, db database.Store, templateVersionID uuid.UUID, protoPreset *sdkproto.Preset, t time.Time) error { - dbPreset, err := db.InsertPreset(ctx, database.InsertPresetParams{ - TemplateVersionID: templateVersionID, - Name: protoPreset.Name, - CreatedAt: t, - }) - if err != nil { - return xerrors.Errorf("insert preset: %w", err) - } + err := db.InTx(func(tx database.Store) error { + dbPreset, err := tx.InsertPreset(ctx, database.InsertPresetParams{ + TemplateVersionID: templateVersionID, + Name: protoPreset.Name, + CreatedAt: t, + }) + if err != nil { + return xerrors.Errorf("insert preset: %w", err) + } - var presetParameterNames []string - var presetParameterValues []string - for _, parameter := range protoPreset.Parameters { - presetParameterNames = append(presetParameterNames, parameter.Name) - presetParameterValues = append(presetParameterValues, parameter.Value) - } - _, err = db.InsertPresetParameters(ctx, database.InsertPresetParametersParams{ - TemplateVersionPresetID: dbPreset.ID, - Names: presetParameterNames, - Values: presetParameterValues, - }) + var presetParameterNames []string + var presetParameterValues []string + for _, parameter := range protoPreset.Parameters { + presetParameterNames = append(presetParameterNames, parameter.Name) + presetParameterValues = append(presetParameterValues, parameter.Value) + } + _, err = tx.InsertPresetParameters(ctx, database.InsertPresetParametersParams{ + TemplateVersionPresetID: dbPreset.ID, + Names: presetParameterNames, + Values: presetParameterValues, + }) + if err != nil { + return xerrors.Errorf("insert preset parameters: %w", err) + } + return nil + }, nil) if err != nil { - return xerrors.Errorf("insert preset parameters: %w", err) + return xerrors.Errorf("insert preset and parameters: %w", err) } return nil }