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

136 lines
2.5 KiB
Go

package media
import (
"context"
"donat-widget/internal/model"
mediaRepo "donat-widget/internal/repository/widget/media"
"log/slog"
)
type ServiceMedia struct {
mediaRepo model.MediaRepo
}
func New(
db model.Db,
storage model.Storage,
) *ServiceMedia {
return &ServiceMedia{
mediaRepo: mediaRepo.New(db, storage),
}
}
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
}