diff --git a/broker/fastexact.go b/broker/fastexact.go index dfa97ba..4e955f2 100644 --- a/broker/fastexact.go +++ b/broker/fastexact.go @@ -92,13 +92,21 @@ func (fe FastExact) setHeaders(req *http.Request) { } func (fe FastExact) search(states []config.State) ([]Job, error) { - var result []Job + var jobs []Job for _, state := range states { - jobs, err := fe.searchOne(state) + subjobs, err := fe.searchOne(state) if err != nil { return nil, err } - result = append(result, jobs...) + jobs = append(jobs, subjobs...) + } + dedupeJobs := map[string]Job{} + for _, job := range jobs { + dedupeJobs[job.UID()] = job + } + result := []Job{} + for _, job := range dedupeJobs { + result = append(result, job) } return result, nil } diff --git a/broker/fastexact_test.go b/broker/fastexact_test.go index e67a2d0..add5dca 100644 --- a/broker/fastexact_test.go +++ b/broker/fastexact_test.go @@ -65,8 +65,8 @@ func TestFastExactSearch(t *testing.T) { _ = db if jobs, err := fe.search([]config.State{config.State("NC"), config.State("SC")}); err != nil { t.Fatal(err) - } else if len(jobs) != 20 { - t.Fatal(jobs) + } else if len(jobs) != 10 { + t.Fatal(len(jobs)) } else { for _, job := range jobs { if job.ID == "" {