mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
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.
This commit is contained in:
Generated
+63
@@ -0,0 +1,63 @@
|
||||
package proto
|
||||
|
||||
import (
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/terraform-provider-coder/v2/provider"
|
||||
)
|
||||
|
||||
func ProviderFormType(ft ParameterFormType) (provider.ParameterFormType, error) {
|
||||
switch ft {
|
||||
case ParameterFormType_DEFAULT:
|
||||
return provider.ParameterFormTypeDefault, nil
|
||||
case ParameterFormType_FORM_ERROR:
|
||||
return provider.ParameterFormTypeError, nil
|
||||
case ParameterFormType_RADIO:
|
||||
return provider.ParameterFormTypeRadio, nil
|
||||
case ParameterFormType_DROPDOWN:
|
||||
return provider.ParameterFormTypeDropdown, nil
|
||||
case ParameterFormType_INPUT:
|
||||
return provider.ParameterFormTypeInput, nil
|
||||
case ParameterFormType_TEXTAREA:
|
||||
return provider.ParameterFormTypeTextArea, nil
|
||||
case ParameterFormType_SLIDER:
|
||||
return provider.ParameterFormTypeSlider, nil
|
||||
case ParameterFormType_CHECKBOX:
|
||||
return provider.ParameterFormTypeCheckbox, nil
|
||||
case ParameterFormType_SWITCH:
|
||||
return provider.ParameterFormTypeSwitch, nil
|
||||
case ParameterFormType_TAGSELECT:
|
||||
return provider.ParameterFormTypeTagSelect, nil
|
||||
case ParameterFormType_MULTISELECT:
|
||||
return provider.ParameterFormTypeMultiSelect, nil
|
||||
}
|
||||
return provider.ParameterFormTypeDefault, xerrors.Errorf("unsupported form type: %s", ft)
|
||||
}
|
||||
|
||||
func FormType(ft provider.ParameterFormType) (ParameterFormType, error) {
|
||||
switch ft {
|
||||
case provider.ParameterFormTypeDefault:
|
||||
return ParameterFormType_DEFAULT, nil
|
||||
case provider.ParameterFormTypeError:
|
||||
return ParameterFormType_FORM_ERROR, nil
|
||||
case provider.ParameterFormTypeRadio:
|
||||
return ParameterFormType_RADIO, nil
|
||||
case provider.ParameterFormTypeDropdown:
|
||||
return ParameterFormType_DROPDOWN, nil
|
||||
case provider.ParameterFormTypeInput:
|
||||
return ParameterFormType_INPUT, nil
|
||||
case provider.ParameterFormTypeTextArea:
|
||||
return ParameterFormType_TEXTAREA, nil
|
||||
case provider.ParameterFormTypeSlider:
|
||||
return ParameterFormType_SLIDER, nil
|
||||
case provider.ParameterFormTypeCheckbox:
|
||||
return ParameterFormType_CHECKBOX, nil
|
||||
case provider.ParameterFormTypeSwitch:
|
||||
return ParameterFormType_SWITCH, nil
|
||||
case provider.ParameterFormTypeTagSelect:
|
||||
return ParameterFormType_TAGSELECT, nil
|
||||
case provider.ParameterFormTypeMultiSelect:
|
||||
return ParameterFormType_MULTISELECT, nil
|
||||
}
|
||||
return ParameterFormType_DEFAULT, xerrors.Errorf("unsupported form type: %s", ft)
|
||||
}
|
||||
Generated
+26
@@ -0,0 +1,26 @@
|
||||
package proto_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/coder/coder/v2/provisionersdk/proto"
|
||||
"github.com/coder/terraform-provider-coder/v2/provider"
|
||||
)
|
||||
|
||||
// TestProviderFormTypeEnum keeps the provider.ParameterFormTypes() enum in sync with the
|
||||
// proto.FormType enum. If a new form type is added to the provider, it should also be added
|
||||
// to the proto file.
|
||||
func TestProviderFormTypeEnum(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
all := provider.ParameterFormTypes()
|
||||
for _, p := range all {
|
||||
t.Run(string(p), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := proto.FormType(p)
|
||||
require.NoError(t, err, "proto form type should be valid, add it to the proto file")
|
||||
})
|
||||
}
|
||||
}
|
||||
Generated
+758
-661
File diff suppressed because it is too large
Load Diff
@@ -27,6 +27,20 @@ message RichParameterOption {
|
||||
string icon = 4;
|
||||
}
|
||||
|
||||
enum ParameterFormType {
|
||||
DEFAULT = 0;
|
||||
FORM_ERROR = 1;
|
||||
RADIO = 2;
|
||||
DROPDOWN = 3;
|
||||
INPUT = 4;
|
||||
TEXTAREA = 5;
|
||||
SLIDER = 6;
|
||||
CHECKBOX = 7;
|
||||
SWITCH = 8;
|
||||
TAGSELECT = 9;
|
||||
MULTISELECT = 10;
|
||||
}
|
||||
|
||||
// RichParameter represents a variable that is exposed.
|
||||
message RichParameter {
|
||||
reserved 14;
|
||||
@@ -49,6 +63,7 @@ message RichParameter {
|
||||
string display_name = 15;
|
||||
int32 order = 16;
|
||||
bool ephemeral = 17;
|
||||
ParameterFormType form_type = 18;
|
||||
}
|
||||
|
||||
// RichParameterValue holds the key/value mapping of a parameter.
|
||||
|
||||
Reference in New Issue
Block a user