2024-09-10 22:37:01 +05:00

123 lines
2.7 KiB
Go

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
}