package widget import ( "context" "donat-widget/internal/model" widgetRepo "donat-widget/internal/repository/widget" donatRepo "donat-widget/internal/repository/widget/donat" "log/slog" ) type ServiceWidget struct { widgetRepo model.WidgetRepo donatRepo model.DonatRepo } func New(db model.Db) *ServiceWidget { return &ServiceWidget{ widgetRepo: widgetRepo.New(db), donatRepo: donatRepo.New(db), } } func (widgetService *ServiceWidget) CreateWidget( ctx context.Context, streamerID model.StreamerID, templateID model.TemplateID, ) (model.WidgetID, error) { widgetID, err := widgetService.widgetRepo.CreateWidget(ctx, streamerID, templateID) if err != nil { slog.Error("widgetService.widgetRepo.CreateWidget: " + err.Error()) return 0, err } return widgetID, nil } func (widgetService *ServiceWidget) DeleteWidget( ctx context.Context, widgetID model.WidgetID, ) error { err := widgetService.widgetRepo.DeleteWidget(ctx, widgetID) if err != nil { slog.Error("widgetService.widgetRepo.DeleteWidget: " + err.Error()) return err } return nil } func (widgetService *ServiceWidget) GetWidgetHTML( ctx context.Context, widgetID model.WidgetID, ) (model.WidgetHTML, error) { var widgetHTML model.WidgetHTML widget, err := widgetService.widgetRepo.GetWidget(ctx, widgetID) if err != nil { slog.Error("widgetService.widgetRepo.GetWidget: " + err.Error()) return widgetHTML, err } backgroundUrl := widget.BackgroundUrl templateID := widget.TemplateID if templateID == 1 { widgetHTML = model.GetTemplate1( widgetID, backgroundUrl, ) } return widgetHTML, nil } func (widgetService *ServiceWidget) GetWidgetInfo( ctx context.Context, widgetID model.WidgetID, ) (*model.DonatAndWidget, error) { widget, err := widgetService.widgetRepo.GetWidget(ctx, widgetID) if err != nil { slog.Error("widgetService.widgetRepo.GetWidget: " + err.Error()) return nil, err } donats, err := widgetService.donatRepo.GetDonat(ctx, widgetID) if err != nil { slog.Error("widgetService.donatRepo.GetDonat: " + err.Error()) return nil, err } var donatAndWidget model.DonatAndWidget if len(donats) == 0 { donatAndWidget = model.DonatAndWidget{ Display: false, } } else { donatAndWidget = model.DonatAndWidget{ Widget: widget, Donat: donats[0], Display: true, } } return &donatAndWidget, nil } func (widgetService *ServiceWidget) UpdateWidgetDuration( ctx context.Context, widgetID model.WidgetID, duration model.Duration, ) error { err := widgetService.widgetRepo.UpdateWidgetDuration( ctx, widgetID, duration, ) if err != nil { slog.Error("widgetService.widgetRepo.UpdateWidgetDuration: " + err.Error()) return err } return nil }