MCPcopy
hub / github.com/apache/devlake / PatchProject

Function PatchProject

backend/server/services/project.go:196–323  ·  view source on GitHub ↗

PatchProject FIXME ...

(name string, body map[string]interface{})

Source from the content-addressed store, hash-verified

194
195// PatchProject FIXME ...
196func PatchProject(name string, body map[string]interface{}) (*models.ApiOutputProject, errors.Error) {
197 projectInput := &models.ApiInputProject{}
198
199 // load input
200 err := helper.DecodeMapStruct(body, projectInput, true)
201 if err != nil {
202 return nil, err
203 }
204
205 // wrap all operation inside a transaction
206 tx := db.Begin()
207 defer func() {
208 if r := recover(); r != nil || err != nil {
209 err = tx.Rollback()
210 if err != nil {
211 logger.Error(err, "PatchProject: failed to rollback")
212 }
213 }
214 }()
215
216 project, err := getProjectByName(tx, name, dal.Lock(true, false))
217 if err != nil {
218 return nil, err
219 }
220
221 // allowed to changed the name
222 if projectInput.Name == "" {
223 projectInput.Name = name
224 }
225 project.BaseProject = projectInput.BaseProject
226
227 // name changed, updates the related entities as well
228 if name != project.Name {
229 // ProjectMetric
230 err = tx.UpdateColumn(
231 &models.ProjectMetricSetting{},
232 "project_name", project.Name,
233 dal.Where("project_name = ?", name),
234 )
235 if err != nil {
236 return nil, err
237 }
238
239 // ProjectPrMetric
240 err = tx.UpdateColumn(
241 &crossdomain.ProjectPrMetric{},
242 "project_name", project.Name,
243 dal.Where("project_name = ?", name),
244 )
245 if err != nil {
246 return nil, err
247 }
248
249 // ProjectIncidentDeploymentRelationship
250 err = tx.UpdateColumn(
251 &crossdomain.ProjectIncidentDeploymentRelationship{},
252 "project_name", project.Name,
253 dal.Where("project_name = ?", name),

Callers

nothing calls this directly

Calls 10

getProjectByNameFunction · 0.85
refreshProjectMetricsFunction · 0.85
makeProjectOutputFunction · 0.85
RenameProjectMethod · 0.80
BeginMethod · 0.65
RollbackMethod · 0.65
ErrorMethod · 0.65
UpdateColumnMethod · 0.65
UpdateMethod · 0.65
CommitMethod · 0.65

Tested by

no test coverage detected