Thanks to visit codestin.com
Credit goes to github.com

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)