2024-11-25 19:13:21 +07:00

74 lines
1.4 KiB
Go

package devices
import (
"context"
"time"
"github.com/android-sms-gateway/server/internal/sms-gateway/models"
"github.com/android-sms-gateway/server/internal/sms-gateway/modules/db"
"go.uber.org/fx"
"go.uber.org/zap"
)
type ServiceParams struct {
fx.In
Config Config
Devices *repository
IDGen db.IDGen
Logger *zap.Logger
}
type Service struct {
config Config
devices *repository
idGen db.IDGen
logger *zap.Logger
}
func (s *Service) Insert(user models.User, device *models.Device) error {
device.ID = s.idGen()
device.AuthToken = s.idGen()
device.UserID = user.ID
return s.devices.Insert(device)
}
func (s *Service) Select(filter ...SelectFilter) ([]models.Device, error) {
return s.devices.Select(filter...)
}
func (s *Service) Get(filter ...SelectFilter) (models.Device, error) {
return s.devices.Get(filter...)
}
func (s *Service) UpdateToken(deviceId string, token string) error {
return s.devices.UpdateToken(deviceId, token)
}
func (s *Service) UpdateLastSeen(deviceId string) error {
return s.devices.UpdateLastSeen(deviceId)
}
func (s *Service) Clean(ctx context.Context) error {
n, err := s.devices.removeUnused(ctx, time.Now().Add(-s.config.UnusedLifetime))
s.logger.Info("Cleaned unused devices", zap.Int64("count", n))
return err
}
func NewService(params ServiceParams) *Service {
return &Service{
config: params.Config,
devices: params.Devices,
idGen: params.IDGen,
logger: params.Logger.Named("service"),
}
}