MCPcopy Index your code
hub / github.com/NdoleStudio/httpsms / phoneMonitor

Method phoneMonitor

api/pkg/services/heartbeat_service.go:214–245  ·  view source on GitHub ↗
(ctx context.Context, params *HeartbeatMonitorStoreParams)

Source from the content-addressed store, hash-verified

212}
213
214func (service *HeartbeatService) phoneMonitor(ctx context.Context, params *HeartbeatMonitorStoreParams) (*entities.HeartbeatMonitor, bool, error) {
215 ctx, span, ctxLogger := service.tracer.StartWithLogger(ctx, service.logger)
216 defer span.End()
217
218 monitor, err := service.monitorRepository.Load(ctx, params.UserID, params.Owner)
219 if stacktrace.GetCode(err) == repositories.ErrCodeNotFound {
220 monitor = &entities.HeartbeatMonitor{
221 ID: uuid.New(),
222 PhoneID: params.PhoneID,
223 UserID: params.UserID,
224 Owner: params.Owner,
225 PhoneOnline: true,
226 CreatedAt: time.Now().UTC(),
227 UpdatedAt: time.Now().UTC(),
228 }
229
230 if err = service.monitorRepository.Store(ctx, monitor); err != nil {
231 msg := fmt.Sprintf("cannot save heartbeat monitor for owner [%s] and user [%s]", monitor.Owner, monitor.UserID)
232 return nil, false, service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
233 }
234
235 ctxLogger.Info(fmt.Sprintf("heartbeat monitor saved with id [%s] for owner [%s] and user [%s]", monitor.ID, monitor.Owner, monitor.UserID))
236 return monitor, true, nil
237 }
238
239 if err != nil {
240 msg := fmt.Sprintf("cannot check if monitor exists with userID [%s] and owner [%s]", params.UserID, params.Owner)
241 return nil, false, service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
242 }
243
244 return monitor, monitor.RequiresCheck(), nil
245}
246
247// DeleteMonitor an entities.HeartbeatMonitor
248func (service *HeartbeatService) DeleteMonitor(ctx context.Context, userID entities.UserID, owner string) error {

Callers 1

StoreMonitorMethod · 0.95

Calls 6

RequiresCheckMethod · 0.80
StartWithLoggerMethod · 0.65
LoadMethod · 0.65
StoreMethod · 0.65
WrapErrorSpanMethod · 0.65
InfoMethod · 0.65

Tested by

no test coverage detected