This is an automated email from the ASF dual-hosted git repository.

abeizn 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 6b21f49e4 feat(framwork): add custom project service (#8041)
6b21f49e4 is described below

commit 6b21f49e4cb5c1af0a464fa55e8cd83337b9c9e2
Author: Lynwee <[email protected]>
AuthorDate: Thu Sep 12 15:01:13 2024 +0800

    feat(framwork): add custom project service (#8041)
---
 backend/server/api/api.go          |  9 ++-------
 backend/server/services/init.go    | 10 ++++++----
 backend/server/services/project.go | 11 +++++++++++
 3 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/backend/server/api/api.go b/backend/server/api/api.go
index 95a485713..69ca8a374 100644
--- a/backend/server/api/api.go
+++ b/backend/server/api/api.go
@@ -59,13 +59,8 @@ func Init() {
        basicRes = services.GetBasicRes()
 }
 
-func InjectCustomService(pipelineNotifier 
services.PipelineNotificationService) errors.Error {
-       if pipelineNotifier != nil {
-               if err := services.InjectCustomService(pipelineNotifier); err 
!= nil {
-                       return err
-               }
-       }
-       return nil
+func InjectCustomService(pipelineNotifier 
services.PipelineNotificationService, projectService services.ProjectService) 
errors.Error {
+       return services.InjectCustomService(pipelineNotifier, projectService)
 }
 
 // @title  DevLake Swagger API
diff --git a/backend/server/services/init.go b/backend/server/services/init.go
index 894ffa09a..7e794e68a 100644
--- a/backend/server/services/init.go
+++ b/backend/server/services/init.go
@@ -125,11 +125,13 @@ func Init() {
        registerPluginsMigrationScripts()
 }
 
-func InjectCustomService(pipelineNotifier PipelineNotificationService) 
errors.Error {
-       if pipelineNotifier == nil {
-               return errors.Default.New("pipeline notifier is nil")
+func InjectCustomService(customPipelineNotifier PipelineNotificationService, 
customProjectService ProjectService) errors.Error {
+       if customPipelineNotifier != nil {
+               customPipelineNotificationService = customPipelineNotifier
+       }
+       if customProjectService != nil {
+               projectService = customProjectService
        }
-       customPipelineNotificationService = pipelineNotifier
        return nil
 }
 
diff --git a/backend/server/services/project.go 
b/backend/server/services/project.go
index 2d70fd4d7..8e9528d38 100644
--- a/backend/server/services/project.go
+++ b/backend/server/services/project.go
@@ -30,6 +30,12 @@ import (
        helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
 )
 
+type ProjectService interface {
+       RenameProject(db dal.Transaction, oldProjectName, newProjectName 
string) errors.Error
+}
+
+var projectService ProjectService
+
 // ProjectQuery used to query projects as the api project input
 type ProjectQuery struct {
        Pagination
@@ -268,6 +274,11 @@ func PatchProject(name string, body 
map[string]interface{}) (*models.ApiOutputPr
                if err != nil {
                        return nil, err
                }
+               if projectService != nil {
+                       if err := projectService.RenameProject(tx, name, 
project.Name); err != nil {
+                               return nil, err
+                       }
+               }
                // rename project
                err = tx.UpdateColumn(
                        &models.Project{},

Reply via email to