(partitions []string, base, target *projectInfo)
| 301 | return out |
| 302 | } |
| 303 | func (m *imlServiceDiff) diff(partitions []string, base, target *projectInfo) *service_diff.Diff { |
| 304 | out := &service_diff.Diff{ |
| 305 | Apis: nil, |
| 306 | Upstreams: nil, |
| 307 | } |
| 308 | baseApis := utils.NewSet(utils.SliceToSlice(base.apiRequestCommits, func(i *commit.Commit[api.Request]) string { |
| 309 | return i.Target |
| 310 | })...) |
| 311 | baseApiProxy := utils.SliceToMap(base.apiProxyCommits, func(i *commit.Commit[api.Proxy]) string { |
| 312 | return i.Target |
| 313 | }) |
| 314 | baseAPIDoc := utils.SliceToMap(base.apiDocCommits, func(i *commit.Commit[api_doc.DocCommit]) string { |
| 315 | return i.Target |
| 316 | }) |
| 317 | |
| 318 | targetApiProxy := utils.SliceToMap(target.apiProxyCommits, func(i *commit.Commit[api.Proxy]) string { |
| 319 | return i.Target |
| 320 | }) |
| 321 | targetAPIDoc := utils.SliceToMap(target.apiDocCommits, func(i *commit.Commit[api_doc.DocCommit]) string { |
| 322 | return i.Target |
| 323 | }) |
| 324 | |
| 325 | for _, rc := range target.apiRequestCommits { |
| 326 | apiId := rc.Target |
| 327 | a := &service_diff.ApiDiff{ |
| 328 | Name: rc.Data.Name, |
| 329 | APi: rc.Target, |
| 330 | Method: rc.Data.Methods, |
| 331 | Protocol: rc.Data.Protocols, |
| 332 | Disable: false, |
| 333 | Path: rc.Data.Path, |
| 334 | Change: 0, |
| 335 | Status: service_diff.Status{}, |
| 336 | } |
| 337 | |
| 338 | pc, hasPc := targetApiProxy[apiId] |
| 339 | dc, hasDC := targetAPIDoc[apiId] |
| 340 | if !hasPc { |
| 341 | // 未设置proxy信息 |
| 342 | a.Status.Proxy = service_diff.StatusUnset |
| 343 | } |
| 344 | if !hasDC { |
| 345 | // 未设置文档 |
| 346 | a.Status.Doc = service_diff.StatusUnset |
| 347 | } |
| 348 | |
| 349 | if !baseApis.Has(apiId) { |
| 350 | a.Change = service_diff.ChangeTypeNew |
| 351 | } else { |
| 352 | a.Change = service_diff.ChangeTypeNone |
| 353 | |
| 354 | baseProxy, hasBaseProxy := baseApiProxy[apiId] |
| 355 | baseDoc, hasBaseDoc := baseAPIDoc[apiId] |
| 356 | if hasBaseDoc != hasDC || hasBaseProxy != hasPc { |
| 357 | // 文档或者proxy变更 |
| 358 | a.Change = service_diff.ChangeTypeUpdate |
| 359 | } else if (hasPc && pc.UUID != baseProxy.UUID) || (hasDC && dc.UUID != baseDoc.UUID) { |
| 360 | // 文档 或者 proxy 变更 |
no test coverage detected