Skip to content

Commit 702c908

Browse files
authored
fix: do not skip parameter validation if min or max = 0 (#7707)
1 parent 4eb0baa commit 702c908

21 files changed

+155
-57
lines changed

cli/create_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/coder/coder/cli/clitest"
1616
"github.com/coder/coder/coderd/coderdtest"
1717
"github.com/coder/coder/coderd/gitauth"
18+
"github.com/coder/coder/coderd/util/ptr"
1819
"github.com/coder/coder/codersdk"
1920
"github.com/coder/coder/provisioner/echo"
2021
"github.com/coder/coder/provisionersdk/proto"
@@ -494,7 +495,7 @@ func TestCreateValidateRichParameters(t *testing.T) {
494495
)
495496

496497
numberRichParameters := []*proto.RichParameter{
497-
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: 3, ValidationMax: 10},
498+
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10))},
498499
}
499500

500501
stringRichParameters := []*proto.RichParameter{

cli/update_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"github.com/coder/coder/cli/clitest"
1313
"github.com/coder/coder/coderd/coderdtest"
14+
"github.com/coder/coder/coderd/util/ptr"
1415
"github.com/coder/coder/codersdk"
1516
"github.com/coder/coder/provisioner/echo"
1617
"github.com/coder/coder/provisionersdk/proto"
@@ -245,7 +246,7 @@ func TestUpdateValidateRichParameters(t *testing.T) {
245246
)
246247

247248
numberRichParameters := []*proto.RichParameter{
248-
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: 3, ValidationMax: 10},
249+
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10))},
249250
}
250251

251252
stringRichParameters := []*proto.RichParameter{

coderd/database/db2sdk/db2sdk.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,17 @@ func TemplateVersionParameter(param database.TemplateVersionParameter) (codersdk
4646
if err != nil {
4747
return codersdk.TemplateVersionParameter{}, err
4848
}
49+
50+
var validationMin *int32
51+
if param.ValidationMin.Valid {
52+
validationMin = &param.ValidationMin.Int32
53+
}
54+
55+
var validationMax *int32
56+
if param.ValidationMax.Valid {
57+
validationMax = &param.ValidationMax.Int32
58+
}
59+
4960
return codersdk.TemplateVersionParameter{
5061
Name: param.Name,
5162
DisplayName: param.DisplayName,
@@ -57,8 +68,8 @@ func TemplateVersionParameter(param database.TemplateVersionParameter) (codersdk
5768
Icon: param.Icon,
5869
Options: options,
5970
ValidationRegex: param.ValidationRegex,
60-
ValidationMin: param.ValidationMin,
61-
ValidationMax: param.ValidationMax,
71+
ValidationMin: validationMin,
72+
ValidationMax: validationMax,
6273
ValidationError: param.ValidationError,
6374
ValidationMonotonic: codersdk.ValidationMonotonicOrder(param.ValidationMonotonic),
6475
Required: param.Required,

coderd/database/dump.sql

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
BEGIN;
2+
UPDATE template_version_parameters SET validation_min = 0 WHERE validation_min = NULL;
3+
UPDATE template_version_parameters SET validation_max = 0 WHERE validation_max = NULL;
4+
ALTER TABLE template_version_parameters ALTER COLUMN validation_min SET NOT NULL;
5+
ALTER TABLE template_version_parameters ALTER COLUMN validation_max SET NOT NULL;
6+
COMMIT;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
BEGIN;
2+
ALTER TABLE template_version_parameters ALTER COLUMN validation_min DROP NOT NULL;
3+
ALTER TABLE template_version_parameters ALTER COLUMN validation_max DROP NOT NULL;
4+
UPDATE template_version_parameters SET validation_min = NULL WHERE validation_min = 0;
5+
UPDATE template_version_parameters SET validation_max = NULL WHERE validation_max = 0;
6+
COMMIT;

coderd/database/models.go

Lines changed: 2 additions & 2 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: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,21 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete
919919
if err != nil {
920920
return nil, xerrors.Errorf("marshal parameter options: %w", err)
921921
}
922+
923+
var validationMin, validationMax sql.NullInt32
924+
if richParameter.ValidationMin != nil {
925+
validationMin = sql.NullInt32{
926+
Int32: *richParameter.ValidationMin,
927+
Valid: true,
928+
}
929+
}
930+
if richParameter.ValidationMax != nil {
931+
validationMax = sql.NullInt32{
932+
Int32: *richParameter.ValidationMax,
933+
Valid: true,
934+
}
935+
}
936+
922937
_, err = server.Database.InsertTemplateVersionParameter(ctx, database.InsertTemplateVersionParameterParams{
923938
TemplateVersionID: input.TemplateVersionID,
924939
Name: richParameter.Name,
@@ -931,8 +946,8 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete
931946
Options: options,
932947
ValidationRegex: richParameter.ValidationRegex,
933948
ValidationError: richParameter.ValidationError,
934-
ValidationMin: richParameter.ValidationMin,
935-
ValidationMax: richParameter.ValidationMax,
949+
ValidationMin: validationMin,
950+
ValidationMax: validationMax,
936951
ValidationMonotonic: richParameter.ValidationMonotonic,
937952
Required: richParameter.Required,
938953
LegacyVariableName: richParameter.LegacyVariableName,

coderd/templateversions.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,6 +1706,15 @@ func convertTemplateVersionParameter(param database.TemplateVersionParameter) (c
17061706
if err != nil {
17071707
return codersdk.TemplateVersionParameter{}, err
17081708
}
1709+
1710+
var validationMin, validationMax *int32
1711+
if param.ValidationMin.Valid {
1712+
validationMin = &param.ValidationMin.Int32
1713+
}
1714+
if param.ValidationMax.Valid {
1715+
validationMax = &param.ValidationMax.Int32
1716+
}
1717+
17091718
return codersdk.TemplateVersionParameter{
17101719
Name: param.Name,
17111720
DisplayName: param.DisplayName,
@@ -1717,8 +1726,8 @@ func convertTemplateVersionParameter(param database.TemplateVersionParameter) (c
17171726
Icon: param.Icon,
17181727
Options: options,
17191728
ValidationRegex: param.ValidationRegex,
1720-
ValidationMin: param.ValidationMin,
1721-
ValidationMax: param.ValidationMax,
1729+
ValidationMin: validationMin,
1730+
ValidationMax: validationMax,
17221731
ValidationError: param.ValidationError,
17231732
ValidationMonotonic: codersdk.ValidationMonotonicOrder(param.ValidationMonotonic),
17241733
Required: param.Required,

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy