Files
smart-search-back/internal/grpc/request_handler.go
vallyenfail 7e73144486
All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m44s
add service
2026-01-20 14:26:27 +03:00

108 lines
3.1 KiB
Go

package grpc
import (
"context"
"strconv"
"git.techease.ru/Smart-search/smart-search-back/pkg/errors"
pb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/request"
"github.com/google/uuid"
"google.golang.org/protobuf/types/known/timestamppb"
)
func (h *RequestHandler) CreateTZ(ctx context.Context, req *pb.CreateTZRequest) (*pb.CreateTZResponse, error) {
requestID, tzText, err := h.requestService.CreateTZ(ctx, int(req.UserId), req.RequestTxt, req.FileData, req.FileName)
if err != nil {
return nil, errors.ToGRPCError(err, h.logger, "RequestService.CreateTZ")
}
return &pb.CreateTZResponse{
RequestId: requestID.String(),
TzText: tzText,
}, nil
}
func (h *RequestHandler) ApproveTZ(ctx context.Context, req *pb.ApproveTZRequest) (*pb.ApproveTZResponse, error) {
requestID, err := uuid.Parse(req.RequestId)
if err != nil {
return nil, errors.ToGRPCError(err, h.logger, "RequestService.ApproveTZ")
}
suppliers, err := h.requestService.ApproveTZ(ctx, requestID, req.FinalTz, int(req.UserId))
if err != nil {
return nil, errors.ToGRPCError(err, h.logger, "RequestService.ApproveTZ")
}
pbSuppliers := make([]*pb.Supplier, 0, len(suppliers))
for _, s := range suppliers {
pbSuppliers = append(pbSuppliers, &pb.Supplier{
Id: strconv.Itoa(s.ID),
Name: s.Name,
Email: s.Email,
Phone: s.Phone,
Address: s.Address,
Url: s.URL,
})
}
return &pb.ApproveTZResponse{
RequestId: req.RequestId,
Suppliers: pbSuppliers,
}, nil
}
func (h *RequestHandler) GetMailingList(ctx context.Context, req *pb.GetMailingListRequest) (*pb.GetMailingListResponse, error) {
requests, err := h.requestService.GetMailingList(ctx, int(req.UserId))
if err != nil {
return nil, errors.ToGRPCError(err, h.logger, "RequestService.GetMailingList")
}
items := make([]*pb.MailingItem, 0, len(requests))
for _, r := range requests {
items = append(items, &pb.MailingItem{
RequestId: r.ID.String(),
RequestTxt: r.RequestTxt,
FinalTz: r.FinalTZ,
MailingStatus: r.MailingStatus,
CreatedAt: timestamppb.New(r.CreatedAt),
SuppliersFound: 0,
})
}
return &pb.GetMailingListResponse{
Items: items,
}, nil
}
func (h *RequestHandler) GetMailingListByID(ctx context.Context, req *pb.GetMailingListByIDRequest) (*pb.GetMailingListByIDResponse, error) {
requestID, err := uuid.Parse(req.RequestId)
if err != nil {
return nil, errors.ToGRPCError(err, h.logger, "RequestService.GetMailingListByID")
}
detail, err := h.requestService.GetMailingListByID(ctx, requestID, int(req.UserId))
if err != nil {
return nil, errors.ToGRPCError(err, h.logger, "RequestService.GetMailingListByID")
}
suppliers := make([]*pb.Supplier, 0, len(detail.Suppliers))
for _, s := range detail.Suppliers {
suppliers = append(suppliers, &pb.Supplier{
Id: strconv.Itoa(s.CompanyID),
Name: s.CompanyName,
Email: s.Email,
Phone: s.Phone,
Url: s.URL,
})
}
return &pb.GetMailingListByIDResponse{
Detail: &pb.MailingDetail{
RequestId: detail.RequestID.String(),
Title: detail.Title,
MailText: detail.MailText,
Suppliers: suppliers,
},
}, nil
}