123 lines
2.7 KiB
Go
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
|
|
}
|