56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package grpc
|
|
|
|
import (
|
|
"context"
|
|
|
|
// Укажите правильный путь до сгенерированного go кода из ваших контрактов
|
|
"lendry-erp/media/internal/application/dto"
|
|
"lendry-erp/media/internal/application/usecases"
|
|
|
|
pb "git.lendry.ru/lendry-erp/contracts.git/gen/go/media"
|
|
)
|
|
|
|
type MediaHandler struct {
|
|
pb.UnimplementedMediaServiceServer
|
|
uploadUC *usecases.UploadUseCase
|
|
presignUC *usecases.PresignUseCase
|
|
}
|
|
|
|
func NewMediaHandler(u *usecases.UploadUseCase, p *usecases.PresignUseCase) *MediaHandler {
|
|
return &MediaHandler{
|
|
uploadUC: u,
|
|
presignUC: p,
|
|
}
|
|
}
|
|
|
|
func (h *MediaHandler) Upload(ctx context.Context, req *pb.UploadRequest) (*pb.UploadResponse, error) {
|
|
res, err := h.uploadUC.Execute(ctx, dto.UploadMediaRequest{
|
|
OriginalName: req.FileName,
|
|
Mode: req.Mode,
|
|
Data: req.Data,
|
|
})
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &pb.UploadResponse{
|
|
FileName: res.FileName,
|
|
Size: res.Size,
|
|
}, nil
|
|
}
|
|
|
|
func (h *MediaHandler) GetPresignedUrl(ctx context.Context, req *pb.GetPresignedUrlRequest) (*pb.GetPresignedUrlResponse, error) {
|
|
res, err := h.presignUC.Execute(ctx, dto.GetUrlRequest{
|
|
FileName: req.FileName,
|
|
IsPublic: req.IsPublic,
|
|
})
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &pb.GetPresignedUrlResponse{
|
|
Url: res.URL,
|
|
}, nil
|
|
} |