no empty document error for client

This commit is contained in:
Mazyar
2026-05-12 14:35:45 +03:30
parent 0a7fdd1328
commit 29b4aa50bd
2 changed files with 22 additions and 13 deletions
+5 -2
View File
@@ -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
View File
@@ -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))