Update API Documentation and Enhance Tender Query Parameters
- Changed references in API documentation from `main.HealthResponse` to `bootstrap.HealthResponse` for consistency. - Added new query parameters `publication_from` and `publication_to` to the tender listing and recommendation endpoints to allow filtering by publication date. - Updated the `ListTendersRequest` struct to include optional fields for `from` and `to` timestamps. - Modified the `TenderRepository` and `TenderService` interfaces to support the new filtering parameters in the tender listing functionality. - Enhanced the service and handler layers to process the new query parameters, improving the flexibility of tender retrieval.
This commit is contained in:
@@ -17,7 +17,7 @@ type TenderService interface {
|
||||
UpdateTender(ctx context.Context, req UpdateTenderRequest) (*Tender, error)
|
||||
DeleteTender(ctx context.Context, id string) error
|
||||
ListTenders(ctx context.Context, req ListTendersRequest) (*ListTendersResponse, error)
|
||||
RecommendTenders(ctx context.Context, companyID *string, limit, offset int) (*ListTendersResponse, error)
|
||||
RecommendTenders(ctx context.Context, companyID *string, from *int64, to *int64, limit, offset int) (*ListTendersResponse, error)
|
||||
|
||||
// Maintenance operations
|
||||
UpdateExpiredTenders(ctx context.Context) error
|
||||
@@ -136,6 +136,8 @@ func (s *tenderService) ListTenders(ctx context.Context, req ListTendersRequest)
|
||||
"limit": req.Limit,
|
||||
"offset": req.Offset,
|
||||
"company_id": req.CompanyID,
|
||||
"from": req.From,
|
||||
"to": req.To,
|
||||
})
|
||||
|
||||
if req.Limit <= 0 {
|
||||
@@ -145,7 +147,7 @@ func (s *tenderService) ListTenders(ctx context.Context, req ListTendersRequest)
|
||||
req.Limit = 100
|
||||
}
|
||||
|
||||
tenders, total, err := s.repository.List(ctx, req.Criteria, req.Limit, req.Offset)
|
||||
tenders, total, err := s.repository.List(ctx, req.Criteria, req.Limit, req.Offset, req.From, req.To)
|
||||
if err != nil {
|
||||
s.logger.Error("Failed to list tenders", map[string]interface{}{
|
||||
"error": err.Error(),
|
||||
@@ -220,7 +222,7 @@ func (s *tenderService) ListTenders(ctx context.Context, req ListTendersRequest)
|
||||
}
|
||||
|
||||
// ListTenders retrieves tenders with pagination and filtering
|
||||
func (s *tenderService) RecommendTenders(ctx context.Context, companyID *string, limit, offset int) (*ListTendersResponse, error) {
|
||||
func (s *tenderService) RecommendTenders(ctx context.Context, companyID *string, from *int64, to *int64, limit, offset int) (*ListTendersResponse, error) {
|
||||
s.logger.Info("Recommend tenders", map[string]interface{}{
|
||||
"company_id": companyID,
|
||||
})
|
||||
@@ -244,7 +246,7 @@ func (s *tenderService) RecommendTenders(ctx context.Context, companyID *string,
|
||||
tenders, total, err := s.repository.List(ctx, TenderSearchCriteria{
|
||||
Status: []TenderStatus{TenderStatusActive},
|
||||
Classifications: company.Tags.CPVCodes,
|
||||
}, limit, offset)
|
||||
}, limit, offset, from, to)
|
||||
if err != nil {
|
||||
s.logger.Error("Failed to list tenders", map[string]interface{}{
|
||||
"error": err.Error(),
|
||||
|
||||
Reference in New Issue
Block a user