tenders document filter
This commit is contained in:
@@ -61,6 +61,7 @@ type SearchForm struct {
|
|||||||
Languages []string `query:"languages" valid:"optional"`
|
Languages []string `query:"languages" valid:"optional"`
|
||||||
OnlyActiveDeadlines bool `query:"-" valid:"optional"`
|
OnlyActiveDeadlines bool `query:"-" valid:"optional"`
|
||||||
Language *string `query:"lang" valid:"optional"`
|
Language *string `query:"lang" valid:"optional"`
|
||||||
|
DocumentsScraped bool `query:"documents_scraped" valid:"optional"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SearchResponse represents the response for listing tenders
|
// SearchResponse represents the response for listing tenders
|
||||||
|
|||||||
@@ -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 submission_date_to query number false "Submission deadline to (Unix timestamp, seconds)"
|
||||||
// @Param languages query []string false "Filter by languages (comma-separated)"
|
// @Param languages query []string false "Filter by languages (comma-separated)"
|
||||||
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
||||||
|
// @Param documents_scraped query bool false "When true, only tenders with scraped documents"
|
||||||
// @Param limit query int false "Number of items per page (default: 20, max: 100)"
|
// @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."
|
// @Param offset query int false "Number of items to skip (default: 0). Prefer cursor for deep pages."
|
||||||
// @Param cursor query string false "Opaque cursor from previous page meta.next_cursor"
|
// @Param cursor query string false "Opaque cursor from previous page meta.next_cursor"
|
||||||
@@ -228,6 +229,7 @@ func (h *TenderHandler) Search(c echo.Context) error {
|
|||||||
// @Param submission_date_to query number false "Submission deadline to (Unix seconds)"
|
// @Param submission_date_to query number false "Submission deadline to (Unix seconds)"
|
||||||
// @Param languages query []string false "Filter by languages (comma-separated)"
|
// @Param languages query []string false "Filter by languages (comma-separated)"
|
||||||
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
||||||
|
// @Param documents_scraped query bool false "When true, only tenders with scraped documents"
|
||||||
// @Param limit query int false "Number of items per page (default: 20, max: 100)"
|
// @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."
|
// @Param offset query int false "Number of items to skip (default: 0). Prefer cursor for deep pages."
|
||||||
// @Param cursor query string false "Opaque cursor from previous page meta.next_cursor"
|
// @Param cursor query string false "Opaque cursor from previous page meta.next_cursor"
|
||||||
@@ -310,6 +312,7 @@ func (h *TenderHandler) GetPublicTenders(c echo.Context) error {
|
|||||||
// @Param submission_date_to query number false "Submission deadline to (Unix seconds)"
|
// @Param submission_date_to query number false "Submission deadline to (Unix seconds)"
|
||||||
// @Param languages query []string false "Filter by languages (comma-separated)"
|
// @Param languages query []string false "Filter by languages (comma-separated)"
|
||||||
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
// @Param buyer_organization_id query string false "Filter by buyer organization ID"
|
||||||
|
// @Param documents_scraped query bool false "When true, only tenders with scraped documents"
|
||||||
// @Param limit query int false "Number of items per page (default: 20, max: 100)"
|
// @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."
|
// @Param offset query int false "Number of items to skip (default: 0). Prefer cursor for deep pages."
|
||||||
// @Param cursor query string false "Opaque cursor from previous page meta.next_cursor"
|
// @Param cursor query string false "Opaque cursor from previous page meta.next_cursor"
|
||||||
|
|||||||
@@ -1058,5 +1058,22 @@ func (r *tenderRepository) buildSearchFilter(form *SearchForm) bson.M {
|
|||||||
filter["notice_language_code"] = bson.M{"$in": dedupeNonEmptyStrings(form.Languages)}
|
filter["notice_language_code"] = bson.M{"$in": dedupeNonEmptyStrings(form.Languages)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if form.DocumentsScraped {
|
||||||
|
scrapedClause := bson.M{
|
||||||
|
"$or": []bson.M{
|
||||||
|
{"processing_metadata.documents_scraped": true},
|
||||||
|
{"scraped_documents.0": bson.M{"$exists": true}},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if len(filter) == 0 {
|
||||||
|
return scrapedClause
|
||||||
|
}
|
||||||
|
if and, ok := filter["$and"].([]bson.M); ok {
|
||||||
|
filter["$and"] = append(and, scrapedClause)
|
||||||
|
} else {
|
||||||
|
filter["$and"] = []bson.M{filter, scrapedClause}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return filter
|
return filter
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user