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 }