2024-09-27 13:50:20 +05:00

116 lines
2.5 KiB
Go

package widget
import (
"context"
"donat-widget/internal/model"
"log/slog"
)
func New(
widgetRepo model.WidgetRepo,
donatRepo model.DonatRepo,
) *ServiceWidget {
return &ServiceWidget{
widgetRepo: widgetRepo,
donatRepo: donatRepo,
}
}
type ServiceWidget struct {
widgetRepo model.WidgetRepo
donatRepo model.DonatRepo
}
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) UpdateDuration(
ctx context.Context,
widgetID model.WidgetID,
duration model.Duration,
) error {
err := widgetService.widgetRepo.UpdateDuration(ctx, widgetID, duration)
if err != nil {
slog.Error("widgetService.widgetRepo.UpdateDuration: " + 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
}
if widget.TemplateID == 1 {
widgetHTML = model.GetTemplate1(
widgetID,
widget.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
}