no empty document error for client
This commit is contained in:
@@ -401,7 +401,7 @@ func (h *TenderHandler) GetDocumentSummaries(c echo.Context) error {
|
|||||||
// @Param id path string true "Tender ID"
|
// @Param id path string true "Tender ID"
|
||||||
// @Success 200 {object} response.APIResponse{data=TenderDocumentsResponse}
|
// @Success 200 {object} response.APIResponse{data=TenderDocumentsResponse}
|
||||||
// @Failure 400 {object} response.APIResponse
|
// @Failure 400 {object} response.APIResponse
|
||||||
// @Failure 404 {object} response.APIResponse
|
// @Failure 404 {object} response.APIResponse "Tender not found"
|
||||||
// @Failure 500 {object} response.APIResponse
|
// @Failure 500 {object} response.APIResponse
|
||||||
// @Router /api/v1/tenders/{id}/documents [get]
|
// @Router /api/v1/tenders/{id}/documents [get]
|
||||||
func (h *TenderHandler) GetDocuments(c echo.Context) error {
|
func (h *TenderHandler) GetDocuments(c echo.Context) error {
|
||||||
@@ -412,7 +412,10 @@ func (h *TenderHandler) GetDocuments(c echo.Context) error {
|
|||||||
|
|
||||||
documents, err := h.service.GetDocuments(c.Request().Context(), id)
|
documents, err := h.service.GetDocuments(c.Request().Context(), id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return response.NotFound(c, "Tender documents not found")
|
if errors.Is(err, orm.ErrDocumentNotFound) {
|
||||||
|
return response.NotFound(c, "Tender not found")
|
||||||
|
}
|
||||||
|
return response.InternalServerError(c, "Failed to retrieve tender documents")
|
||||||
}
|
}
|
||||||
|
|
||||||
return response.Success(c, documents, "Tender documents retrieved successfully")
|
return response.Success(c, documents, "Tender documents retrieved successfully")
|
||||||
|
|||||||
+17
-11
@@ -346,9 +346,6 @@ func (s *tenderService) GetDocuments(ctx context.Context, id string) (*TenderDoc
|
|||||||
if id == "" {
|
if id == "" {
|
||||||
return nil, fmt.Errorf("tender ID cannot be empty")
|
return nil, fmt.Errorf("tender ID cannot be empty")
|
||||||
}
|
}
|
||||||
if s.aiSummarizerStorage == nil {
|
|
||||||
return nil, ErrTenderDocumentStorageUnavailable
|
|
||||||
}
|
|
||||||
|
|
||||||
tender, err := s.repository.GetByID(ctx, id)
|
tender, err := s.repository.GetByID(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -358,25 +355,34 @@ func (s *tenderService) GetDocuments(ctx context.Context, id string) (*TenderDoc
|
|||||||
})
|
})
|
||||||
return nil, fmt.Errorf("failed to get tender: %w", err)
|
return nil, fmt.Errorf("failed to get tender: %w", err)
|
||||||
}
|
}
|
||||||
if tender == nil {
|
|
||||||
return nil, fmt.Errorf("tender not found")
|
empty := func() *TenderDocumentsResponse {
|
||||||
|
return &TenderDocumentsResponse{
|
||||||
|
TenderID: id,
|
||||||
|
Documents: []TenderDocumentResponse{},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if s.aiSummarizerStorage == nil {
|
||||||
|
s.logger.Debug("AI summarizer storage not configured; returning empty tender documents list", map[string]interface{}{
|
||||||
|
"tender_id": id,
|
||||||
|
})
|
||||||
|
return empty(), nil
|
||||||
|
}
|
||||||
|
|
||||||
if strings.TrimSpace(tender.ContractFolderID) == "" {
|
if strings.TrimSpace(tender.ContractFolderID) == "" {
|
||||||
return nil, fmt.Errorf("tender has no contract folder id")
|
return empty(), nil
|
||||||
}
|
|
||||||
if strings.TrimSpace(tender.NoticePublicationID) == "" {
|
|
||||||
return nil, fmt.Errorf("tender notice publication ID is empty")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
storedDocuments, err := s.listDocumentsForTender(ctx, tender)
|
storedDocuments, err := s.listDocumentsForTender(ctx, tender)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Error("Failed to list tender documents from storage", map[string]interface{}{
|
s.logger.Warn("Listing tender documents failed; returning empty list", map[string]interface{}{
|
||||||
"tender_id": id,
|
"tender_id": id,
|
||||||
"contract_folder_id": tender.ContractFolderID,
|
"contract_folder_id": tender.ContractFolderID,
|
||||||
"notice_id": tender.NoticePublicationID,
|
"notice_id": tender.NoticePublicationID,
|
||||||
"error": err.Error(),
|
"error": err.Error(),
|
||||||
})
|
})
|
||||||
return nil, fmt.Errorf("failed to list tender documents: %w", err)
|
storedDocuments = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
documents := make([]TenderDocumentResponse, 0, len(storedDocuments))
|
documents := make([]TenderDocumentResponse, 0, len(storedDocuments))
|
||||||
|
|||||||
Reference in New Issue
Block a user