@@ -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
9697return 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 ) {
100144options ,err := templateVersionParameterOptions (param .Options )
101145if err != nil {
@@ -299,6 +343,15 @@ func templateVersionParameterOptions(rawOptions json.RawMessage) ([]codersdk.Tem
299343return 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 {
303356return codersdk.OAuth2ProviderApp {
304357ID :dbApp .ID ,