116 lines
2.5 KiB
Go
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
|
|
}
|