support some filtering
All checks were successful
Generate check / check-changes (pull_request) Successful in 28s
Quality / check-changes (pull_request) Successful in 3s
Generate check / verify-generate (pull_request) Has been skipped
Quality / run-tests (pull_request) Successful in 58s

This commit is contained in:
2026-05-16 09:09:39 +01:00
parent 4626f08b9c
commit adcd192cb9
7 changed files with 607 additions and 29 deletions

View File

@@ -50,7 +50,12 @@ type ReportWriter interface {
Write(context.Context, ReportItem) error
}
func BuildReport(ctx context.Context, reader RecordReader, writer ReportWriter) error {
// Selector returns true if a record should be selected for processing, false otherwise.
type Selector func(Record) bool
// BuildReport reads records from a RecordReader and, if the record passes the Selector, it is
// processed into the report
func BuildReport(ctx context.Context, reader RecordReader, writer ReportWriter, s Selector) error {
buys := make(map[string]*FillerQueue)
for {
@@ -66,6 +71,10 @@ func BuildReport(ctx context.Context, reader RecordReader, writer ReportWriter)
return err
}
if !s(rec) {
continue
}
buyQueue, ok := buys[rec.Symbol()]
if !ok {
buyQueue = new(FillerQueue)