This is an automated email from the ASF dual-hosted git repository.
klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/main by this push:
new 7709ec149 refactor(projects): fix unexpected pointer in projects'
related structs (#5729)
7709ec149 is described below
commit 7709ec14952efbae910fab4cb666333ea2c67c2b
Author: Linwei <[email protected]>
AuthorDate: Mon Jul 24 17:39:57 2023 +0800
refactor(projects): fix unexpected pointer in projects' related structs
(#5729)
* refactor(projects): fix unexpected pointer in projects' related structs
* fix(projects): fix typo in comments
---
backend/core/models/project.go | 4 ++--
backend/server/services/project.go | 17 +++++++++--------
backend/test/helper/api.go | 8 ++++----
3 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/backend/core/models/project.go b/backend/core/models/project.go
index 8704045a8..6a935e97e 100644
--- a/backend/core/models/project.go
+++ b/backend/core/models/project.go
@@ -58,12 +58,12 @@ func (ProjectMetricSetting) TableName() string {
type ApiInputProject struct {
BaseProject `mapstructure:",squash"`
Enable *bool `json:"enable" mapstructure:"enable"`
- Metrics *[]BaseMetric `json:"metrics" mapstructure:"metrics"`
+ Metrics []*BaseMetric `json:"metrics" mapstructure:"metrics"`
}
type ApiOutputProject struct {
Project `mapstructure:",squash"`
- Metrics *[]BaseMetric `json:"metrics" mapstructure:"metrics"`
+ Metrics []*BaseMetric `json:"metrics" mapstructure:"metrics"`
Blueprint *Blueprint `json:"blueprint" mapstructure:"blueprint"`
LastPipeline *Pipeline `json:"lastPipeline,omitempty"
mapstructure:"lastPipeline"`
}
diff --git a/backend/server/services/project.go
b/backend/server/services/project.go
index cbc4952e0..e75b28ce3 100644
--- a/backend/server/services/project.go
+++ b/backend/server/services/project.go
@@ -100,8 +100,8 @@ func CreateProject(projectInput *models.ApiInputProject)
(*models.ApiOutputProje
return nil, errors.Default.Wrap(err, "error creating DB
project")
}
- // check if need flush the Metrics
- if projectInput.Metrics != nil {
+ // check if we need flush the Metrics
+ if len(projectInput.Metrics) > 0 {
err = refreshProjectMetrics(tx, projectInput)
if err != nil {
return nil, err
@@ -234,7 +234,7 @@ func PatchProject(name string, body map[string]interface{})
(*models.ApiOutputPr
}
// refresh project metrics if needed
- if projectInput.Metrics != nil {
+ if len(projectInput.Metrics) > 0 {
err = refreshProjectMetrics(tx, projectInput)
if err != nil {
return nil, err
@@ -337,11 +337,11 @@ func refreshProjectMetrics(tx dal.Transaction,
projectInput *models.ApiInputProj
return err
}
- for _, baseMetric := range *projectInput.Metrics {
+ for _, baseMetric := range projectInput.Metrics {
err = tx.Create(&models.ProjectMetricSetting{
BaseProjectMetricSetting:
models.BaseProjectMetricSetting{
ProjectName: projectInput.Name,
- BaseMetric: baseMetric,
+ BaseMetric: *baseMetric,
},
})
if err != nil {
@@ -362,11 +362,12 @@ func makeProjectOutput(project *models.Project,
withLastPipeline bool) (*models.
}
// convert metric to api output
if len(projectMetrics) > 0 {
- baseMetric := make([]models.BaseMetric, len(projectMetrics))
+ baseMetrics := make([]*models.BaseMetric, len(projectMetrics))
for i, projectMetric := range projectMetrics {
- baseMetric[i] = projectMetric.BaseMetric
+ baseMetric := projectMetric.BaseMetric
+ baseMetrics[i] = &baseMetric
}
- projectOutput.Metrics = &baseMetric
+ projectOutput.Metrics = baseMetrics
}
// load blueprint
diff --git a/backend/test/helper/api.go b/backend/test/helper/api.go
index f1c15483b..e6bca602d 100644
--- a/backend/test/helper/api.go
+++ b/backend/test/helper/api.go
@@ -130,20 +130,20 @@ func (d *DevlakeClient) DeleteBlueprint(blueprintId
uint64) {
}
func (d *DevlakeClient) CreateProject(project *ProjectConfig)
models.ApiOutputProject {
- var metrics []models.BaseMetric
+ var metrics []*models.BaseMetric
doraSeen := false
for _, p := range project.MetricPlugins {
if p.Name == "dora" {
doraSeen = true
}
- metrics = append(metrics, models.BaseMetric{
+ metrics = append(metrics, &models.BaseMetric{
PluginName: p.Name,
PluginOption: string(ToJson(p.Options)),
Enable: true,
})
}
if project.EnableDora && !doraSeen {
- metrics = append(metrics, models.BaseMetric{
+ metrics = append(metrics, &models.BaseMetric{
PluginName: "dora",
PluginOption: string(ToJson(nil)),
Enable: true,
@@ -159,7 +159,7 @@ func (d *DevlakeClient) CreateProject(project
*ProjectConfig) models.ApiOutputPr
Description: project.ProjectDescription,
},
Enable: Val(true),
- Metrics: &metrics,
+ Metrics: metrics,
})
}