MCPcopy Index your code
hub / github.com/APIParkLab/APIPark / diff

Method diff

module/service-diff/iml.go:303–423  ·  view source on GitHub ↗
(partitions []string, base, target *projectInfo)

Source from the content-addressed store, hash-verified

301 return out
302}
303func (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 变更

Callers 2

DiffMethod · 0.95
DiffForLatestMethod · 0.95

Calls 1

diffStrategiesMethod · 0.95

Tested by

no test coverage detected