@@ -21,6 +21,7 @@ import (
2121 "github.com/coder/coder/v2/coderd/rbac"
2222 "github.com/coder/coder/v2/coderd/rbac/policy"
2323 "github.com/coder/coder/v2/coderd/render"
24+ "github.com/coder/coder/v2/coderd/util/ptr"
2425 "github.com/coder/coder/v2/coderd/workspaceapps/appurl"
2526 "github.com/coder/coder/v2/codersdk"
2627 "github.com/coder/coder/v2/provisionersdk/proto"
@@ -96,6 +97,49 @@ func TemplateVersionParameters(params []database.TemplateVersionParameter) ([]co
9697 return out , nil
9798}
9899
100+ func TemplateVersionParameterFromPreview (param previewtypes.Parameter ) (codersdk.TemplateVersionParameter , error ) {
101+ descriptionPlaintext , err := render .PlaintextFromMarkdown (param .Description )
102+ if err != nil {
103+ return codersdk.TemplateVersionParameter {}, err
104+ }
105+
106+ sdkParam := codersdk.TemplateVersionParameter {
107+ Name : param .Name ,
108+ DisplayName : param .DisplayName ,
109+ Description : param .Description ,
110+ DescriptionPlaintext : descriptionPlaintext ,
111+ Type : string (param .Type ),
112+ FormType : string (param .FormType ),
113+ Mutable : param .Mutable ,
114+ DefaultValue : param .DefaultValue .AsString (),
115+ Icon : param .Icon ,
116+ Required : param .Required ,
117+ Ephemeral : param .Ephemeral ,
118+ Options : List (param .Options , TemplateVersionParameterOptionFromPreview ),
119+ // Validation set after
120+ }
121+ if len (param .Validations ) > 0 {
122+ validation := param .Validations [0 ]
123+ sdkParam .ValidationError = validation .Error
124+ if validation .Monotonic != nil {
125+ sdkParam .ValidationMonotonic = codersdk .ValidationMonotonicOrder (* validation .Monotonic )
126+ }
127+ if validation .Regex != nil {
128+ sdkParam .ValidationRegex = * validation .Regex
129+ }
130+ if validation .Min != nil {
131+ //nolint:gosec // No other choice
132+ sdkParam .ValidationMin = ptr .Ref (int32 (* validation .Min ))
133+ }
134+ if validation .Max != nil {
135+ //nolint:gosec // No other choice
136+ sdkParam .ValidationMax = ptr .Ref (int32 (* validation .Max ))
137+ }
138+ }
139+
140+ return sdkParam , nil
141+ }
142+
99143func TemplateVersionParameter (param database.TemplateVersionParameter ) (codersdk.TemplateVersionParameter , error ) {
100144 options , err := templateVersionParameterOptions (param .Options )
101145 if err != nil {
@@ -299,6 +343,15 @@ func templateVersionParameterOptions(rawOptions json.RawMessage) ([]codersdk.Tem
299343 return options , nil
300344}
301345
346+ func TemplateVersionParameterOptionFromPreview (option * previewtypes.ParameterOption ) codersdk.TemplateVersionParameterOption {
347+ return codersdk.TemplateVersionParameterOption {
348+ Name : option .Name ,
349+ Description : option .Description ,
350+ Value : option .Value .AsString (),
351+ Icon : option .Icon ,
352+ }
353+ }
354+
302355func OAuth2ProviderApp (accessURL * url.URL , dbApp database.OAuth2ProviderApp ) codersdk.OAuth2ProviderApp {
303356 return codersdk.OAuth2ProviderApp {
304357 ID : dbApp .ID ,
0 commit comments