mirror of
https://github.com/absmach/magistrala.git
synced 2026-06-23 04:10:28 +00:00
61d0427898
Signed-off-by: dusan <borovcanindusan1@gmail.com>
71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
// Copyright (c) Abstract Machines
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package alarms
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/absmach/magistrala"
|
|
"github.com/absmach/magistrala/pkg/authn"
|
|
repoerr "github.com/absmach/magistrala/pkg/errors/repository"
|
|
)
|
|
|
|
type service struct {
|
|
idp magistrala.IDProvider
|
|
repo Repository
|
|
}
|
|
|
|
var _ Service = (*service)(nil)
|
|
|
|
func NewService(idp magistrala.IDProvider, repo Repository) Service {
|
|
return &service{
|
|
idp: idp,
|
|
repo: repo,
|
|
}
|
|
}
|
|
|
|
func (s *service) CreateAlarm(ctx context.Context, alarm Alarm) error {
|
|
id, err := s.idp.ID()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
alarm.ID = id
|
|
if alarm.CreatedAt.IsZero() {
|
|
alarm.CreatedAt = time.Now()
|
|
}
|
|
|
|
if err := alarm.Validate(); err != nil {
|
|
return err
|
|
}
|
|
|
|
if _, err = s.repo.CreateAlarm(ctx, alarm); err != nil && err != repoerr.ErrNotFound {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (s *service) ViewAlarm(ctx context.Context, session authn.Session, alarmID string) (Alarm, error) {
|
|
return s.repo.ViewAlarm(ctx, alarmID, session.DomainID)
|
|
}
|
|
|
|
func (s *service) ListAlarms(ctx context.Context, session authn.Session, pm PageMetadata) (AlarmsPage, error) {
|
|
if session.SuperAdmin {
|
|
return s.repo.ListAllAlarms(ctx, pm)
|
|
}
|
|
return s.repo.ListUserAlarms(ctx, session.UserID, pm)
|
|
}
|
|
|
|
func (s *service) DeleteAlarm(ctx context.Context, session authn.Session, alarmID string) error {
|
|
return s.repo.DeleteAlarm(ctx, alarmID)
|
|
}
|
|
|
|
func (s *service) UpdateAlarm(ctx context.Context, session authn.Session, alarm Alarm) (Alarm, error) {
|
|
alarm.UpdatedAt = time.Now()
|
|
alarm.UpdatedBy = session.UserID
|
|
|
|
return s.repo.UpdateAlarm(ctx, alarm)
|
|
}
|