Files
test_deploy/internal/feed/handlers.go
Alex Shevchuk d84487d238 1
2025-08-18 17:12:04 +03:00

102 lines
2.7 KiB
Go

package feed
import (
"context"
"fmt"
"log/slog"
)
type Handler struct {
Service *Service
logger *slog.Logger
}
func NewFeedHandler(logger *slog.Logger, service *Service) *Handler {
return &Handler{
Service: service,
logger: logger,
}
}
func (h *Handler) CreateEvent(ctx context.Context, event *Event) error {
if event == nil {
h.logger.Error("CreateEvent: empty event",
slog.String("error", ErrCreationInvalidData.Error()))
return ErrCreationInvalidData
}
h.logger.Debug("CreateEvent: Attempting to create event",
slog.String("type", event.EventType.String()),
slog.String("ownerID", event.OwnerId))
if event.OwnerId == "" || event.EventType == "" || event.Message == "" {
h.logger.Error("CreateEvent: Validation error",
slog.String("error", ErrCreationInvalidData.Error()),
slog.String("type", event.EventType.String()),
slog.String("ownerID", event.OwnerId),
slog.String("message", event.Message),
)
return ErrCreationInvalidData
}
if err := h.Service.AddUserEvent(ctx, event); err != nil {
h.logger.Error("CreateEvent: Service error",
slog.String("error", err.Error()),
slog.String("type", event.EventType.String()),
slog.String("ownerID", event.OwnerId))
return fmt.Errorf("Error creating event: %w", err)
}
h.logger.Debug("CreateEvent: Successfully created event",
slog.String("eventID", event.Id),
slog.String("type", event.EventType.String()),
slog.String("ownerID", event.OwnerId))
return nil
}
func (h *Handler) CancelEvent(ctx context.Context, attachmentId string, reason string) error {
h.logger.Debug("CancelEvent: Attempting to cancel event",
slog.String("attachmentID", attachmentId),
)
if attachmentId == "" {
h.logger.Error("CancelEvent: Validation error",
slog.String("error", "attachment Id is required"))
return ErrAttachmentIDRequired
}
if reason == "" {
h.logger.Error("CancelEvent: Validation error",
slog.String("error", "cancellation reason is required"),
slog.String("attachmentID", attachmentId))
return ErrCancellationReasonRequired
}
if err := h.Service.CancelEvents(ctx, attachmentId, reason); err != nil {
h.logger.Error("CancelEvent: Service error",
slog.String("error", err.Error()),
slog.String("attachmentID", attachmentId))
return fmt.Errorf("error cancelling event: %w", err)
}
h.logger.Debug("CancelEvent: Successfully cancelled event",
slog.String("attachmentID", attachmentId))
return nil
}
func (h *Handler) GetCompanyIdByUidTmp(ctx context.Context, ownerID string) ([]string, error) {
return h.Service.GetCompanyIdsByUid(ctx, ownerID)
}
func (h *Handler) GetAgentIdBySubmissionId(ctx context.Context, submissionId string) (string, error) {
return h.Service.GetAgentIdBySubmissionId(ctx, submissionId)
}