warren830 commented on code in PR #3679: URL: https://github.com/apache/incubator-devlake/pull/3679#discussion_r1015357181
########## services/project_helper.go: ########## @@ -0,0 +1,166 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package services + +import ( + goerror "errors" + + "github.com/apache/incubator-devlake/config" + "github.com/apache/incubator-devlake/errors" + "github.com/apache/incubator-devlake/models" + "github.com/apache/incubator-devlake/plugins/core" + "gorm.io/gorm" +) + +// CreateDbProject accepts a project instance and insert it to database +func CreateDbProject(project *models.Project) errors.Error { + err := db.Create(project).Error + if err != nil { + return errors.Default.Wrap(err, "error creating DB project") + } + return nil +} + +// CreateDbProjectMetric accepts a project metric instance and insert it to database +func CreateDbProjectMetric(projectMetric *models.ProjectMetric) errors.Error { + err := db.Create(projectMetric).Error + if err != nil { + return errors.Default.Wrap(err, "error creating DB project metric") + } + return nil +} + +// SaveDbProject save a project instance and update it to database +func SaveDbProject(project *models.Project) errors.Error { + err := db.Save(project).Error + if err != nil { + return errors.Default.Wrap(err, "error saving DB project") + } + return nil +} + +// SaveDbProjectMetric save a project instance and update it to database +func SaveDbProjectMetric(projectMetric *models.ProjectMetric) errors.Error { + err := db.Save(projectMetric).Error + if err != nil { + return errors.Default.Wrap(err, "error saving DB project metric") + } + return nil +} + +// GetDbProjects returns a paginated list of Project based on `query` +func GetDbProjects(query *ProjectQuery) ([]*models.Project, int64, errors.Error) { + projects := make([]*models.Project, 0) + db := db.Model(projects).Order("created_at desc") + + var count int64 + err := db.Count(&count).Error + if err != nil { + return nil, 0, errors.Default.Wrap(err, "error getting DB count of project") + } + db = processDbClausesWithPager(db, query.PageSize, query.Page) + + err = db.Find(&projects).Error + if err != nil { + return nil, 0, errors.Default.Wrap(err, "error finding DB project") + } + + return projects, count, nil +} + +// GetDbProject returns the detail of a given project name +func GetDbProject(name string) (*models.Project, errors.Error) { + project := &models.Project{} + + err := db.First(project, name).Error + if err != nil { + if goerror.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.NotFound.Wrap(err, "could not find project in DB") + } + return nil, errors.Default.Wrap(err, "error getting project from DB") + } + + return project, nil +} + +// GetDbProjectMetric returns the detail of a given project name +func GetDbProjectMetric(projectName string, pluginName string) (*models.ProjectMetric, errors.Error) { + projectMetric := &models.ProjectMetric{} + + err := db.First(projectMetric, projectName, pluginName).Error + if err != nil { + if goerror.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.NotFound.Wrap(err, "could not find project metric in DB") + } + return nil, errors.Default.Wrap(err, "error getting project metric from DB") + } + + return projectMetric, nil +} + +// encryptProject +func encryptProject(project *models.Project) (*models.Project, errors.Error) { + encKey := config.GetConfig().GetString(core.EncodeKeyEnvStr) + + describeEncrypt, err := core.Encrypt(encKey, project.Describe) + if err != nil { + return nil, err + } + project.Describe = describeEncrypt + + return project, nil +} + +// encryptProjectMetric +func encryptProjectMetric(projectMetric *models.ProjectMetric) (*models.ProjectMetric, errors.Error) { + encKey := config.GetConfig().GetString(core.EncodeKeyEnvStr) + + pluginOption, err := core.Encrypt(encKey, projectMetric.PluginOption) + if err != nil { + return nil, err + } + projectMetric.PluginOption = pluginOption + + return projectMetric, nil +} + +// decryptProject +func decryptProject(project *models.Project) (*models.Project, errors.Error) { + encKey := config.GetConfig().GetString(core.EncodeKeyEnvStr) + + describe, err := core.Decrypt(encKey, project.Describe) + if err != nil { + return nil, err + } + project.Describe = describe + + return project, nil +} + +// decryptProjectMetric +func decryptProjectMetric(projectMetric *models.ProjectMetric) (*models.ProjectMetric, errors.Error) { Review Comment: same here, why do we need to decrypt this entity? ########## services/project_helper.go: ########## @@ -0,0 +1,166 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package services + +import ( + goerror "errors" + + "github.com/apache/incubator-devlake/config" + "github.com/apache/incubator-devlake/errors" + "github.com/apache/incubator-devlake/models" + "github.com/apache/incubator-devlake/plugins/core" + "gorm.io/gorm" +) + +// CreateDbProject accepts a project instance and insert it to database +func CreateDbProject(project *models.Project) errors.Error { + err := db.Create(project).Error + if err != nil { + return errors.Default.Wrap(err, "error creating DB project") + } + return nil +} + +// CreateDbProjectMetric accepts a project metric instance and insert it to database +func CreateDbProjectMetric(projectMetric *models.ProjectMetric) errors.Error { + err := db.Create(projectMetric).Error + if err != nil { + return errors.Default.Wrap(err, "error creating DB project metric") + } + return nil +} + +// SaveDbProject save a project instance and update it to database +func SaveDbProject(project *models.Project) errors.Error { + err := db.Save(project).Error + if err != nil { + return errors.Default.Wrap(err, "error saving DB project") + } + return nil +} + +// SaveDbProjectMetric save a project instance and update it to database +func SaveDbProjectMetric(projectMetric *models.ProjectMetric) errors.Error { + err := db.Save(projectMetric).Error + if err != nil { + return errors.Default.Wrap(err, "error saving DB project metric") + } + return nil +} + +// GetDbProjects returns a paginated list of Project based on `query` +func GetDbProjects(query *ProjectQuery) ([]*models.Project, int64, errors.Error) { + projects := make([]*models.Project, 0) + db := db.Model(projects).Order("created_at desc") + + var count int64 + err := db.Count(&count).Error + if err != nil { + return nil, 0, errors.Default.Wrap(err, "error getting DB count of project") + } + db = processDbClausesWithPager(db, query.PageSize, query.Page) + + err = db.Find(&projects).Error + if err != nil { + return nil, 0, errors.Default.Wrap(err, "error finding DB project") + } + + return projects, count, nil +} + +// GetDbProject returns the detail of a given project name +func GetDbProject(name string) (*models.Project, errors.Error) { + project := &models.Project{} + + err := db.First(project, name).Error + if err != nil { + if goerror.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.NotFound.Wrap(err, "could not find project in DB") + } + return nil, errors.Default.Wrap(err, "error getting project from DB") + } + + return project, nil +} + +// GetDbProjectMetric returns the detail of a given project name +func GetDbProjectMetric(projectName string, pluginName string) (*models.ProjectMetric, errors.Error) { + projectMetric := &models.ProjectMetric{} + + err := db.First(projectMetric, projectName, pluginName).Error + if err != nil { + if goerror.Is(err, gorm.ErrRecordNotFound) { + return nil, errors.NotFound.Wrap(err, "could not find project metric in DB") + } + return nil, errors.Default.Wrap(err, "error getting project metric from DB") + } + + return projectMetric, nil +} + +// encryptProject +func encryptProject(project *models.Project) (*models.Project, errors.Error) { + encKey := config.GetConfig().GetString(core.EncodeKeyEnvStr) + + describeEncrypt, err := core.Encrypt(encKey, project.Describe) + if err != nil { + return nil, err + } + project.Describe = describeEncrypt + + return project, nil +} + +// encryptProjectMetric +func encryptProjectMetric(projectMetric *models.ProjectMetric) (*models.ProjectMetric, errors.Error) { Review Comment: Also, we don't need to encrypt this entity -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
