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,
        })
 }
 

Reply via email to