Skip to content

Commit 8387dd2

Browse files
authored
chore: add form_type parameter argument to db (#17920)
`form_type` is a new parameter field in the terraform provider. Bring that field into coder/coder. Validation for `multi-select` has also been added.
1 parent 776c144 commit 8387dd2

35 files changed

+1555
-821
lines changed

coderd/apidoc/docs.go

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/db2sdk/db2sdk.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ func WorkspaceBuildParameters(params []database.WorkspaceBuildParameter) []coder
9292
}
9393

9494
func TemplateVersionParameters(params []database.TemplateVersionParameter) ([]codersdk.TemplateVersionParameter, error) {
95-
out := make([]codersdk.TemplateVersionParameter, len(params))
96-
var err error
97-
for i, p := range params {
98-
out[i], err = TemplateVersionParameter(p)
95+
out := make([]codersdk.TemplateVersionParameter, 0, len(params))
96+
for _, p := range params {
97+
np, err := TemplateVersionParameter(p)
9998
if err != nil {
10099
return nil, xerrors.Errorf("convert template version parameter %q: %w", p.Name, err)
101100
}
101+
out = append(out, np)
102102
}
103103

104104
return out, nil
@@ -131,6 +131,7 @@ func TemplateVersionParameter(param database.TemplateVersionParameter) (codersdk
131131
Description: param.Description,
132132
DescriptionPlaintext: descriptionPlaintext,
133133
Type: param.Type,
134+
FormType: string(param.FormType),
134135
Mutable: param.Mutable,
135136
DefaultValue: param.DefaultValue,
136137
Icon: param.Icon,
@@ -293,7 +294,8 @@ func templateVersionParameterOptions(rawOptions json.RawMessage) ([]codersdk.Tem
293294
if err != nil {
294295
return nil, err
295296
}
296-
var options []codersdk.TemplateVersionParameterOption
297+
298+
options := make([]codersdk.TemplateVersionParameterOption, 0)
297299
for _, option := range protoOptions {
298300
options = append(options, codersdk.TemplateVersionParameterOption{
299301
Name: option.Name,

coderd/database/dbgen/dbgen.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,7 @@ func TemplateVersionParameter(t testing.TB, db database.Store, orig database.Tem
992992
Name: takeFirst(orig.Name, testutil.GetRandomName(t)),
993993
Description: takeFirst(orig.Description, testutil.GetRandomName(t)),
994994
Type: takeFirst(orig.Type, "string"),
995+
FormType: orig.FormType, // empty string is ok!
995996
Mutable: takeFirst(orig.Mutable, false),
996997
DefaultValue: takeFirst(orig.DefaultValue, testutil.GetRandomName(t)),
997998
Icon: takeFirst(orig.Icon, testutil.GetRandomName(t)),

coderd/database/dbmem/dbmem.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9393,6 +9393,7 @@ func (q *FakeQuerier) InsertTemplateVersionParameter(_ context.Context, arg data
93939393
DisplayName: arg.DisplayName,
93949394
Description: arg.Description,
93959395
Type: arg.Type,
9396+
FormType: arg.FormType,
93969397
Mutable: arg.Mutable,
93979398
DefaultValue: arg.DefaultValue,
93989399
Icon: arg.Icon,

coderd/database/dump.sql

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE template_version_parameters DROP COLUMN form_type;
2+
DROP TYPE parameter_form_type;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CREATE TYPE parameter_form_type AS ENUM ('', 'error', 'radio', 'dropdown', 'input', 'textarea', 'slider', 'checkbox', 'switch', 'tag-select', 'multi-select');
2+
COMMENT ON TYPE parameter_form_type
3+
IS 'Enum set should match the terraform provider set. This is defined as future form_types are not supported, and should be rejected. '
4+
'Always include the empty string for using the default form type.';
5+
6+
-- Intentionally leaving the default blank. The provisioner will not re-run any
7+
-- imports to backfill these values. Missing values just have to be handled.
8+
ALTER TABLE template_version_parameters ADD COLUMN form_type parameter_form_type NOT NULL DEFAULT '';
9+
10+
COMMENT ON COLUMN template_version_parameters.form_type
11+
IS 'Specify what form_type should be used to render the parameter in the UI. Unsupported values are rejected.';

coderd/database/models.go

Lines changed: 88 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 26 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/templateversionparameters.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ INSERT INTO
55
name,
66
description,
77
type,
8+
form_type,
89
mutable,
910
default_value,
1011
icon,
@@ -37,7 +38,8 @@ VALUES
3738
$14,
3839
$15,
3940
$16,
40-
$17
41+
$17,
42+
$18
4143
) RETURNING *;
4244

4345
-- name: GetTemplateVersionParameters :many

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
protobuf "google.golang.org/protobuf/proto"
2929

3030
"cdr.dev/slog"
31+
"github.com/coder/coder/v2/coderd/util/slice"
3132

3233
"github.com/coder/coder/v2/codersdk/drpcsdk"
3334

@@ -1453,12 +1454,24 @@ func (s *server) completeTemplateImportJob(ctx context.Context, job database.Pro
14531454
}
14541455
}
14551456

1457+
pft, err := sdkproto.ProviderFormType(richParameter.FormType)
1458+
if err != nil {
1459+
return xerrors.Errorf("parameter %q: %w", richParameter.Name, err)
1460+
}
1461+
1462+
dft := database.ParameterFormType(pft)
1463+
if !dft.Valid() {
1464+
list := strings.Join(slice.ToStrings(database.AllParameterFormTypeValues()), ", ")
1465+
return xerrors.Errorf("parameter %q field 'form_type' not valid, currently supported: %s", richParameter.Name, list)
1466+
}
1467+
14561468
_, err = db.InsertTemplateVersionParameter(ctx, database.InsertTemplateVersionParameterParams{
14571469
TemplateVersionID: input.TemplateVersionID,
14581470
Name: richParameter.Name,
14591471
DisplayName: richParameter.DisplayName,
14601472
Description: richParameter.Description,
14611473
Type: richParameter.Type,
1474+
FormType: dft,
14621475
Mutable: richParameter.Mutable,
14631476
DefaultValue: richParameter.DefaultValue,
14641477
Icon: richParameter.Icon,

0 commit comments

Comments
 (0)