Enhance search functionality by adding NoticePublicationID to SearchForm and updating API documentation
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
- Added `NoticePublicationID` field to the `SearchForm` for filtering tenders by TED notice publication ID. - Updated Swagger documentation in the handler methods to include the new `notice_publication_id` parameter for relevant endpoints. - Modified the repository's search filter to incorporate the new `NoticePublicationID` field, allowing for more precise search queries. This update improves the search capabilities within the tender management system, enhancing user experience and data retrieval accuracy.
This commit is contained in:
@@ -58,6 +58,7 @@ type SearchForm struct {
|
||||
SubmissionDateTo *int64 `query:"submission_date_to" valid:"optional"`
|
||||
Source []string `query:"source" valid:"optional"`
|
||||
BuyerOrganizationID *string `query:"buyer_organization_id" valid:"optional"`
|
||||
NoticePublicationID *string `query:"notice_publication_id" valid:"optional"`
|
||||
Languages []string `query:"languages" valid:"optional"`
|
||||
OnlyActiveDeadlines bool `query:"-" valid:"optional"`
|
||||
Language *string `query:"lang" valid:"optional"`
|
||||
|
||||
@@ -158,6 +158,7 @@ func (h *TenderHandler) Delete(c echo.Context) error {
|
||||
// @Param submission_date_to query number false "Submission deadline to (Unix timestamp, seconds)"
|
||||
// @Param languages query []string false "Filter by languages (comma-separated)"
|
||||
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
||||
// @Param notice_publication_id query string false "Filter by TED notice publication ID"
|
||||
// @Param documents_scraped query bool false "When true, only tenders whose contract_folder_id has documents in MinIO"
|
||||
// @Param limit query int false "Number of items per page (default: 20, max: 100)"
|
||||
// @Param offset query int false "Number of items to skip (default: 0). Prefer cursor for deep pages."
|
||||
@@ -229,6 +230,7 @@ func (h *TenderHandler) Search(c echo.Context) error {
|
||||
// @Param submission_date_to query number false "Submission deadline to (Unix seconds)"
|
||||
// @Param languages query []string false "Filter by languages (comma-separated)"
|
||||
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
||||
// @Param notice_publication_id query string false "Filter by TED notice publication ID"
|
||||
// @Param documents_scraped query bool false "When true, only tenders whose contract_folder_id has documents in MinIO"
|
||||
// @Param limit query int false "Number of items per page (default: 20, max: 100)"
|
||||
// @Param offset query int false "Number of items to skip (default: 0). Prefer cursor for deep pages."
|
||||
@@ -312,6 +314,7 @@ func (h *TenderHandler) GetPublicTenders(c echo.Context) error {
|
||||
// @Param submission_date_to query number false "Submission deadline to (Unix seconds)"
|
||||
// @Param languages query []string false "Filter by languages (comma-separated)"
|
||||
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
||||
// @Param notice_publication_id query string false "Filter by TED notice publication ID"
|
||||
// @Param documents_scraped query bool false "When true, only tenders whose contract_folder_id has documents in MinIO"
|
||||
// @Param limit query int false "Number of items per page (default: 20, max: 100)"
|
||||
// @Param offset query int false "Number of items to skip (default: 0). Prefer cursor for deep pages."
|
||||
|
||||
@@ -1062,6 +1062,12 @@ func (r *tenderRepository) buildSearchFilter(form *SearchForm) bson.M {
|
||||
filter["buyer_organization.id"] = *form.BuyerOrganizationID
|
||||
}
|
||||
|
||||
if form.NoticePublicationID != nil {
|
||||
if noticePublicationID := strings.TrimSpace(*form.NoticePublicationID); noticePublicationID != "" {
|
||||
filter["notice_publication_id"] = noticePublicationID
|
||||
}
|
||||
}
|
||||
|
||||
if len(form.Languages) > 0 {
|
||||
filter["notice_language_code"] = bson.M{"$in": dedupeNonEmptyStrings(form.Languages)}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user