Refactor document scraper service to support multiple country codes for pending tenders retrieval.
This commit is contained in:
@@ -9,7 +9,16 @@ import (
|
||||
"tm/pkg/response"
|
||||
)
|
||||
|
||||
const documentScraperCountryCode = "SWE"
|
||||
var documentScraperCountryCodes = []string{"SWE", "FIN", "NOR"}
|
||||
|
||||
func isDocumentScraperCountry(countryCode string) bool {
|
||||
for _, code := range documentScraperCountryCodes {
|
||||
if countryCode == code {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Service defines business logic for the document scraper API
|
||||
type Service interface {
|
||||
@@ -33,7 +42,7 @@ func NewService(tenderRepo tender.TenderRepository, logger logger.Logger) Servic
|
||||
}
|
||||
|
||||
// ListPendingTenders retrieves tenders that have not yet been scraped for documents.
|
||||
// Only returns tenders from Sweden with active deadlines (deadline not yet reached).
|
||||
// Only returns tenders from Sweden, Finland, and Norway with active deadlines (deadline not yet reached).
|
||||
func (s *service) ListPendingTenders(ctx context.Context, limit, offset int) (*DocumentScraperListResponse, *response.Meta, error) {
|
||||
s.logger.Info("Listing pending tenders for document scraper", map[string]interface{}{
|
||||
"limit": limit,
|
||||
@@ -42,7 +51,7 @@ func (s *service) ListPendingTenders(ctx context.Context, limit, offset int) (*D
|
||||
|
||||
now := time.Now().Unix()
|
||||
|
||||
tenders, hasMore, err := s.tenderRepo.GetPendingDocumentScrapeTenders(ctx, documentScraperCountryCode, now, limit, offset)
|
||||
tenders, hasMore, err := s.tenderRepo.GetPendingDocumentScrapeTenders(ctx, documentScraperCountryCodes, now, limit, offset)
|
||||
if err != nil {
|
||||
s.logger.Error("Failed to list pending tenders", map[string]interface{}{
|
||||
"error": err.Error(),
|
||||
@@ -77,7 +86,7 @@ func (s *service) ListPendingTenders(ctx context.Context, limit, offset int) (*D
|
||||
}
|
||||
|
||||
// GetTenderByNoticeID retrieves a specific tender by its notice publication ID.
|
||||
// Only returns tenders from Sweden with active deadlines (deadline not yet reached).
|
||||
// Only returns tenders from Sweden, Finland, and Norway with active deadlines (deadline not yet reached).
|
||||
func (s *service) GetTenderByNoticeID(ctx context.Context, noticeID string) (*DocumentScraperTenderResponse, error) {
|
||||
s.logger.Info("Getting tender by notice ID for document scraper", map[string]interface{}{
|
||||
"notice_id": noticeID,
|
||||
@@ -97,8 +106,8 @@ func (s *service) GetTenderByNoticeID(ctx context.Context, noticeID string) (*Do
|
||||
}
|
||||
|
||||
now := time.Now().Unix()
|
||||
if t.CountryCode != documentScraperCountryCode || t.TenderDeadline <= now {
|
||||
s.logger.Info("Tender filtered out: not Sweden or deadline passed", map[string]interface{}{
|
||||
if !isDocumentScraperCountry(t.CountryCode) || t.TenderDeadline <= now {
|
||||
s.logger.Info("Tender filtered out: unsupported country or deadline passed", map[string]interface{}{
|
||||
"notice_id": noticeID,
|
||||
"country_code": t.CountryCode,
|
||||
"tender_deadline": t.TenderDeadline,
|
||||
|
||||
Reference in New Issue
Block a user