132 lines
2.4 KiB
Go
132 lines
2.4 KiB
Go
package media
|
|
|
|
import (
|
|
"context"
|
|
"donat-widget/internal/model"
|
|
"log/slog"
|
|
)
|
|
|
|
func New(mediaRepo model.MediaRepo) *ServiceMedia {
|
|
return &ServiceMedia{
|
|
mediaRepo: mediaRepo,
|
|
}
|
|
}
|
|
|
|
type ServiceMedia struct {
|
|
mediaRepo model.MediaRepo
|
|
}
|
|
|
|
func (mediaService *ServiceMedia) SetMediaFile(
|
|
ctx context.Context,
|
|
mediaType model.MediaType,
|
|
widgetID model.WidgetID,
|
|
file model.UploadFile,
|
|
filename string,
|
|
size int64,
|
|
collection string,
|
|
) error {
|
|
fileID, err := mediaService.mediaRepo.SetMediaFile(
|
|
file,
|
|
filename,
|
|
size,
|
|
collection,
|
|
)
|
|
if err != nil {
|
|
slog.Error("mediaService.mediaRepo.SetMediaFile: " + err.Error())
|
|
return err
|
|
}
|
|
|
|
err = mediaService.SetMediaUrl(
|
|
ctx,
|
|
mediaType,
|
|
widgetID,
|
|
model.MediaUrl(fileID),
|
|
)
|
|
if err != nil {
|
|
slog.Error("mediaService.SetMediaUrl: " + err.Error())
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (mediaService *ServiceMedia) GetMediaFile(
|
|
ctx context.Context,
|
|
widgetID model.WidgetID,
|
|
mediaType model.MediaType,
|
|
) (model.DownloadFile, error) {
|
|
fileID, err := mediaService.mediaRepo.GetMediaUrl(
|
|
ctx,
|
|
widgetID,
|
|
mediaType,
|
|
)
|
|
if err != nil {
|
|
slog.Error("mediaService.mediaRepo.GetMediaUrl: " + err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
file, err := mediaService.mediaRepo.GetMediaFile(
|
|
model.FileID(fileID),
|
|
)
|
|
if err != nil {
|
|
slog.Error("mediaService.mediaRepo.GetMediaFile: " + err.Error())
|
|
return nil, err
|
|
}
|
|
return file, nil
|
|
}
|
|
|
|
func (mediaService *ServiceMedia) UpdateMediaFile(
|
|
ctx context.Context,
|
|
widgetID model.WidgetID,
|
|
mediaType model.MediaType,
|
|
file model.UploadFile,
|
|
filename string,
|
|
size int64,
|
|
collection string,
|
|
) error {
|
|
fileID, err := mediaService.mediaRepo.GetMediaUrl(
|
|
ctx,
|
|
widgetID,
|
|
mediaType,
|
|
)
|
|
if err != nil {
|
|
slog.Error("mediaService.mediaRepo.GetMediaUrl: " + err.Error())
|
|
return err
|
|
}
|
|
|
|
err = mediaService.mediaRepo.UpdateMediaFile(
|
|
ctx,
|
|
widgetID,
|
|
file,
|
|
model.FileID(fileID),
|
|
filename,
|
|
size,
|
|
collection,
|
|
mediaType,
|
|
)
|
|
if err != nil {
|
|
slog.Error("mediaService.mediaRepo.UpdateMediaFile: " + err.Error())
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (mediaService *ServiceMedia) SetMediaUrl(
|
|
ctx context.Context,
|
|
mediaType model.MediaType,
|
|
widgetID model.WidgetID,
|
|
mediaUrl model.MediaUrl,
|
|
) error {
|
|
err := mediaService.mediaRepo.SetMediaUrl(
|
|
ctx,
|
|
widgetID,
|
|
mediaUrl,
|
|
mediaType,
|
|
)
|
|
if err != nil {
|
|
slog.Error("mediaService.mediaRepo.SetMediaUrl: " + err.Error())
|
|
return err
|
|
}
|
|
return nil
|
|
}
|