owpengram-server/internal/app/clienttelemetry/service.go
2026-07-24 11:56:59 +08:00

31 lines
864 B
Go

package clienttelemetry
import (
"context"
"fmt"
"time"
"telesrv/internal/domain"
"telesrv/internal/store"
)
type Service struct {
store store.ClientTelemetryStore
}
func NewService(telemetryStore store.ClientTelemetryStore) *Service {
return &Service{store: telemetryStore}
}
func (s *Service) Record(ctx context.Context, userID int64, kind domain.ClientTelemetryKind, peer domain.Peer, subjectIDs []int64, payload any, createdAt time.Time) (domain.ClientTelemetryEvent, bool, error) {
if s == nil || s.store == nil {
return domain.ClientTelemetryEvent{}, false, fmt.Errorf("client telemetry store is not configured")
}
event, err := domain.NewClientTelemetryEvent(
userID, kind, peer, subjectIDs, payload, createdAt,
)
if err != nil {
return domain.ClientTelemetryEvent{}, false, err
}
return s.store.CreateClientTelemetry(ctx, event)
}