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

Method AddSubscriber

module/subscribe/iml.go:216–271  ·  view source on GitHub ↗
(ctx context.Context, serviceId string, input *subscribe_dto.AddSubscriber)

Source from the content-addressed store, hash-verified

214}
215
216func (i *imlSubscribeModule) AddSubscriber(ctx context.Context, serviceId string, input *subscribe_dto.AddSubscriber) error {
217 _, err := i.serviceService.Get(ctx, serviceId)
218 if err != nil {
219 return err
220 }
221 clusters, err := i.clusterService.List(ctx)
222 if err != nil {
223 return err
224 }
225 sub := &gateway.SubscribeRelease{
226 Service: serviceId,
227 Application: input.Application,
228 Expired: "0",
229 }
230 return i.transaction.Transaction(ctx, func(ctx context.Context) error {
231 info, err := i.subscribeService.GetByServiceAndApplication(ctx, serviceId, input.Application)
232 if err == nil {
233 // 订阅方已存在
234 if info.ApplyStatus != subscribe.ApplyStatusSubscribe {
235 // 更新订阅方状态
236 status := subscribe.ApplyStatusSubscribe
237 from := subscribe.FromUser
238 err = i.subscribeService.Save(ctx, info.Id, &subscribe.UpdateSubscribe{
239 ApplyStatus: &status,
240 From: &from,
241 })
242 if err != nil {
243 return err
244 }
245 } else {
246 return nil
247 }
248 } else {
249 err = i.subscribeService.Create(ctx, &subscribe.CreateSubscribe{
250 Uuid: uuid.New().String(),
251 Service: serviceId,
252 Application: input.Application,
253 ApplyStatus: subscribe.ApplyStatusSubscribe,
254 From: subscribe.FromUser,
255 })
256 if err != nil {
257 return err
258 }
259 }
260
261 for _, c := range clusters {
262 err = i.onlineSubscriber(ctx, c.Uuid, sub)
263 if err != nil {
264 return fmt.Errorf("add subscriber for cluster[%s] %v", c.Uuid, err)
265 }
266 }
267
268 return nil
269 })
270
271}
272
273func (i *imlSubscribeModule) onlineSubscriber(ctx context.Context, clusterId string, subscriber *gateway.SubscribeRelease) error {

Callers

nothing calls this directly

Calls 7

onlineSubscriberMethod · 0.95
GetMethod · 0.65
ListMethod · 0.65
SaveMethod · 0.65
CreateMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected