9
9
"golang.org/x/xerrors"
10
10
11
11
"github.com/coder/coder/v2/coderd/database"
12
+ "github.com/coder/coder/v2/coderd/database/db2sdk"
12
13
"github.com/coder/coder/v2/coderd/util/ptr"
13
14
sdkproto "github.com/coder/coder/v2/provisionersdk/proto"
14
15
"github.com/coder/preview"
@@ -26,89 +27,7 @@ func (r *loader) staticRender(ctx context.Context, db database.Store) (*staticRe
26
27
return nil , xerrors .Errorf ("template version parameters: %w" , err )
27
28
}
28
29
29
- params := make ([]previewtypes.Parameter , 0 , len (dbTemplateVersionParameters ))
30
- for _ , it := range dbTemplateVersionParameters {
31
- param := previewtypes.Parameter {
32
- ParameterData : previewtypes.ParameterData {
33
- Name : it .Name ,
34
- DisplayName : it .DisplayName ,
35
- Description : it .Description ,
36
- Type : previewtypes .ParameterType (it .Type ),
37
- FormType : provider .ParameterFormType (it .FormType ),
38
- Styling : previewtypes.ParameterStyling {},
39
- Mutable : it .Mutable ,
40
- DefaultValue : previewtypes .StringLiteral (it .DefaultValue ),
41
- Icon : it .Icon ,
42
- Options : make ([]* previewtypes.ParameterOption , 0 ),
43
- Validations : make ([]* previewtypes.ParameterValidation , 0 ),
44
- Required : it .Required ,
45
- Order : int64 (it .DisplayOrder ),
46
- Ephemeral : it .Ephemeral ,
47
- Source : nil ,
48
- },
49
- // Always use the default, since we used to assume the empty string
50
- Value : previewtypes .StringLiteral (it .DefaultValue ),
51
- Diagnostics : make (previewtypes.Diagnostics , 0 ),
52
- }
53
-
54
- if it .ValidationError != "" || it .ValidationRegex != "" || it .ValidationMonotonic != "" {
55
- var reg * string
56
- if it .ValidationRegex != "" {
57
- reg = ptr .Ref (it .ValidationRegex )
58
- }
59
-
60
- var vMin * int64
61
- if it .ValidationMin .Valid {
62
- vMin = ptr .Ref (int64 (it .ValidationMin .Int32 ))
63
- }
64
-
65
- var vMax * int64
66
- if it .ValidationMax .Valid {
67
- vMax = ptr .Ref (int64 (it .ValidationMax .Int32 ))
68
- }
69
-
70
- var monotonic * string
71
- if it .ValidationMonotonic != "" {
72
- monotonic = ptr .Ref (it .ValidationMonotonic )
73
- }
74
-
75
- param .Validations = append (param .Validations , & previewtypes.ParameterValidation {
76
- Error : it .ValidationError ,
77
- Regex : reg ,
78
- Min : vMin ,
79
- Max : vMax ,
80
- Monotonic : monotonic ,
81
- })
82
- }
83
-
84
- var protoOptions []* sdkproto.RichParameterOption
85
- err := json .Unmarshal (it .Options , & protoOptions )
86
- if err != nil {
87
- param .Diagnostics = append (param .Diagnostics , & hcl.Diagnostic {
88
- Severity : hcl .DiagError ,
89
- Summary : "Failed to parse json parameter options" ,
90
- Detail : err .Error (),
91
- })
92
- }
93
-
94
- for _ , opt := range protoOptions {
95
- param .Options = append (param .Options , & previewtypes.ParameterOption {
96
- Name : opt .Name ,
97
- Description : opt .Description ,
98
- Value : previewtypes .StringLiteral (opt .Value ),
99
- Icon : opt .Icon ,
100
- })
101
- }
102
-
103
- // Take the form type from the ValidateFormType function. This is a bit
104
- // unfortunate we have to do this, but it will return the default form_type
105
- // for a given set of conditions.
106
- _ , param .FormType , _ = provider .ValidateFormType (provider .OptionType (param .Type ), len (param .Options ), param .FormType )
107
-
108
- param .Diagnostics = append (param .Diagnostics , previewtypes .Diagnostics (param .Valid (param .Value ))... )
109
- params = append (params , param )
110
- }
111
-
30
+ params := db2sdk .List (dbTemplateVersionParameters , TemplateVersionParameter )
112
31
return & staticRender {
113
32
staticParams : params ,
114
33
}, nil
@@ -140,3 +59,85 @@ func (r *staticRender) Render(_ context.Context, _ uuid.UUID, values map[string]
140
59
}
141
60
142
61
func (* staticRender ) Close () {}
62
+
63
+ func TemplateVersionParameter (it database.TemplateVersionParameter ) previewtypes.Parameter {
64
+ param := previewtypes.Parameter {
65
+ ParameterData : previewtypes.ParameterData {
66
+ Name : it .Name ,
67
+ DisplayName : it .DisplayName ,
68
+ Description : it .Description ,
69
+ Type : previewtypes .ParameterType (it .Type ),
70
+ FormType : provider .ParameterFormType (it .FormType ),
71
+ Styling : previewtypes.ParameterStyling {},
72
+ Mutable : it .Mutable ,
73
+ DefaultValue : previewtypes .StringLiteral (it .DefaultValue ),
74
+ Icon : it .Icon ,
75
+ Options : make ([]* previewtypes.ParameterOption , 0 ),
76
+ Validations : make ([]* previewtypes.ParameterValidation , 0 ),
77
+ Required : it .Required ,
78
+ Order : int64 (it .DisplayOrder ),
79
+ Ephemeral : it .Ephemeral ,
80
+ Source : nil ,
81
+ },
82
+ // Always use the default, since we used to assume the empty string
83
+ Value : previewtypes .StringLiteral (it .DefaultValue ),
84
+ Diagnostics : make (previewtypes.Diagnostics , 0 ),
85
+ }
86
+
87
+ if it .ValidationError != "" || it .ValidationRegex != "" || it .ValidationMonotonic != "" {
88
+ var reg * string
89
+ if it .ValidationRegex != "" {
90
+ reg = ptr .Ref (it .ValidationRegex )
91
+ }
92
+
93
+ var vMin * int64
94
+ if it .ValidationMin .Valid {
95
+ vMin = ptr .Ref (int64 (it .ValidationMin .Int32 ))
96
+ }
97
+
98
+ var vMax * int64
99
+ if it .ValidationMax .Valid {
100
+ vMax = ptr .Ref (int64 (it .ValidationMax .Int32 ))
101
+ }
102
+
103
+ var monotonic * string
104
+ if it .ValidationMonotonic != "" {
105
+ monotonic = ptr .Ref (it .ValidationMonotonic )
106
+ }
107
+
108
+ param .Validations = append (param .Validations , & previewtypes.ParameterValidation {
109
+ Error : it .ValidationError ,
110
+ Regex : reg ,
111
+ Min : vMin ,
112
+ Max : vMax ,
113
+ Monotonic : monotonic ,
114
+ })
115
+ }
116
+
117
+ var protoOptions []* sdkproto.RichParameterOption
118
+ err := json .Unmarshal (it .Options , & protoOptions )
119
+ if err != nil {
120
+ param .Diagnostics = append (param .Diagnostics , & hcl.Diagnostic {
121
+ Severity : hcl .DiagError ,
122
+ Summary : "Failed to parse json parameter options" ,
123
+ Detail : err .Error (),
124
+ })
125
+ }
126
+
127
+ for _ , opt := range protoOptions {
128
+ param .Options = append (param .Options , & previewtypes.ParameterOption {
129
+ Name : opt .Name ,
130
+ Description : opt .Description ,
131
+ Value : previewtypes .StringLiteral (opt .Value ),
132
+ Icon : opt .Icon ,
133
+ })
134
+ }
135
+
136
+ // Take the form type from the ValidateFormType function. This is a bit
137
+ // unfortunate we have to do this, but it will return the default form_type
138
+ // for a given set of conditions.
139
+ _ , param .FormType , _ = provider .ValidateFormType (provider .OptionType (param .Type ), len (param .Options ), param .FormType )
140
+
141
+ param .Diagnostics = append (param .Diagnostics , previewtypes .Diagnostics (param .Valid (param .Value ))... )
142
+ return param
143
+ }
0 commit comments