tenders document filter
This commit is contained in:
@@ -61,6 +61,7 @@ type SearchForm struct {
|
||||
Languages []string `query:"languages" valid:"optional"`
|
||||
OnlyActiveDeadlines bool `query:"-" valid:"optional"`
|
||||
Language *string `query:"lang" valid:"optional"`
|
||||
DocumentsScraped bool `query:"documents_scraped" valid:"optional"`
|
||||
}
|
||||
|
||||
// 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 languages query []string false "Filter by languages (comma-separated)"
|
||||
// @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 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"
|
||||
@@ -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 languages query []string false "Filter by languages (comma-separated)"
|
||||
// @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 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"
|
||||
@@ -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 languages query []string false "Filter by languages (comma-separated)"
|
||||
// @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 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"
|
||||
|
||||
@@ -1058,5 +1058,22 @@ func (r *tenderRepository) buildSearchFilter(form *SearchForm) bson.M {
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user