Skip to content

Commit d81b772

Browse files
Ash-expShivam-nagar23
authored andcommitted
feat: added validation for create app workflow API (#3842)
* feat: added validation for create app workflow * fixed: CiPipelineDetails validation * fixed: virtual env validation * fixed: validation struct * fixed: validation struct * fixed: validation struct * chore: renamed a function * fixed: updated validation * updated: validation for linked CI
1 parent 974c58d commit d81b772

File tree

4 files changed

+173
-45
lines changed

4 files changed

+173
-45
lines changed

api/appbean/AppDetail.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@ import (
88
)
99

1010
type AppDetail struct {
11-
Metadata *AppMetadata `json:"metadata,notnull" validate:"required"`
12-
GitMaterials []*GitMaterial `json:"gitMaterials,notnull"`
13-
DockerConfig *DockerConfig `json:"dockerConfig"`
14-
GlobalDeploymentTemplate *DeploymentTemplate `json:"globalDeploymentTemplate,notnull"`
15-
AppWorkflows []*AppWorkflow `json:"workflows"`
16-
GlobalConfigMaps []*ConfigMap `json:"globalConfigMaps"`
17-
GlobalSecrets []*Secret `json:"globalSecrets"`
18-
EnvironmentOverrides map[string]*EnvironmentOverride `json:"environmentOverride"`
11+
Metadata *AppMetadata `json:"metadata,notnull" validate:"dive,required"`
12+
GitMaterials []*GitMaterial `json:"gitMaterials,notnull" validate:"dive,min=1"`
13+
DockerConfig *DockerConfig `json:"dockerConfig" validate:"dive"`
14+
GlobalDeploymentTemplate *DeploymentTemplate `json:"globalDeploymentTemplate,notnull" validate:"dive"`
15+
AppWorkflows []*AppWorkflow `json:"workflows,omitempty" validate:"dive"`
16+
GlobalConfigMaps []*ConfigMap `json:"globalConfigMaps,omitempty" validate:"dive"`
17+
GlobalSecrets []*Secret `json:"globalSecrets,omitempty" validate:"dive"`
18+
EnvironmentOverrides map[string]*EnvironmentOverride `json:"environmentOverride,omitempty" validate:"dive"`
1919
}
2020

2121
type AppWorkflowCloneDto struct {
2222
AppId int `json:"appId"`
23-
AppName string `json:"appName"`
24-
AppWorkflows []*AppWorkflow `json:"workflows"`
25-
EnvironmentOverrides map[string]*EnvironmentOverride `json:"environmentOverride"`
23+
AppName string `json:"appName" validate:"required"`
24+
AppWorkflows []*AppWorkflow `json:"workflows,omitempty" validate:"dive"`
25+
EnvironmentOverrides map[string]*EnvironmentOverride `json:"environmentOverride,omitempty" validate:"dive"`
2626
}
2727

2828
type AppMetadata struct {
@@ -71,15 +71,15 @@ type DeploymentTemplate struct {
7171
}
7272

7373
type AppWorkflow struct {
74-
Name string `json:"name"`
75-
CiPipeline *CiPipelineDetails `json:"ciPipeline"`
76-
CdPipelines []*CdPipelineDetails `json:"cdPipelines"`
74+
Name string `json:"name" validate:"required"`
75+
CiPipeline *CiPipelineDetails `json:"ciPipeline" validate:"dive,required"`
76+
CdPipelines []*CdPipelineDetails `json:"cdPipelines,omitempty" validate:"dive"`
7777
}
7878

7979
type CiPipelineDetails struct {
8080
Name string `json:"name" validate:"required"` //name suffix of corresponding pipeline
81-
IsManual bool `json:"isManual" validate:"required"`
82-
CiPipelineMaterialsConfig []*CiPipelineMaterialConfig `json:"ciPipelineMaterialsConfig"`
81+
IsManual bool `json:"isManual"`
82+
CiPipelineMaterialsConfig []*CiPipelineMaterialConfig `json:"ciPipelineMaterialsConfig" validate:"dive,min=1"`
8383
DockerBuildArgs map[string]string `json:"dockerBuildArgs"`
8484
BeforeDockerBuildScripts []*BuildScript `json:"beforeDockerBuildScripts"`
8585
AfterDockerBuildScripts []*BuildScript `json:"afterDockerBuildScripts"`
@@ -93,7 +93,7 @@ type CiPipelineDetails struct {
9393
}
9494

9595
type CiPipelineMaterialConfig struct {
96-
Type pipelineConfig.SourceType `json:"type,omitempty" validate:"oneof=SOURCE_TYPE_BRANCH_FIXED WEBHOOK"`
96+
Type pipelineConfig.SourceType `json:"type,omitempty" validate:"oneof=SOURCE_TYPE_BRANCH_FIXED SOURCE_TYPE_BRANCH_REGEX SOURCE_TYPE_TAG_ANY WEBHOOK"`
9797
Value string `json:"value,omitempty" `
9898
CheckoutPath string `json:"checkoutPath"`
9999
GitMaterialId int `json:"gitMaterialId"`
@@ -107,9 +107,9 @@ type BuildScript struct {
107107
}
108108

109109
type CdPipelineDetails struct {
110-
Name string `json:"name"` //pipelineName
111-
EnvironmentName string `json:"environmentName" `
112-
TriggerType pipelineConfig.TriggerType `json:"triggerType" validate:"required"`
110+
Name string `json:"name" validate:"required"` //pipelineName
111+
EnvironmentName string `json:"environmentName" validate:"required"`
112+
TriggerType pipelineConfig.TriggerType `json:"triggerType" validate:"oneof=AUTOMATIC MANUAL"`
113113
DeploymentAppType string `json:"deploymentAppType"`
114114
DeploymentStrategyType chartRepoRepository.DeploymentStrategy `json:"deploymentType,omitempty"` //
115115
DeploymentStrategies []*DeploymentStrategy `json:"deploymentStrategies"`

0 commit comments

Comments
 (0)