From 34e89d3f50911ea2e475d37dfd8e63bd125c6673 Mon Sep 17 00:00:00 2001 From: lion Date: Thu, 4 Sep 2025 15:22:24 +0800 Subject: [PATCH] apply the field-list filter --- maker/golang/xdb/processor.go | 8 ++++++-- maker/golang/xdb/util_test.go | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/maker/golang/xdb/processor.go b/maker/golang/xdb/processor.go index 6754a8d..eac76ba 100644 --- a/maker/golang/xdb/processor.go +++ b/maker/golang/xdb/processor.go @@ -38,7 +38,11 @@ func NewProcessor(srcFile string, dstFile string, fields []int) (*Processor, err return &Processor{ srcHandle: srcHandle, dstHandle: dstHandle, - segments: []*Segment{}, + + // filter fields index + fields: fields, + + segments: []*Segment{}, }, nil } @@ -60,7 +64,7 @@ func (p *Processor) loadSegments() error { return err } - // slog.Info("filtered", "region", region) + // slog.Info("filtered", "source", seg.Region, "filtered", region) seg.Region = region p.segments = append(p.segments, seg) return nil diff --git a/maker/golang/xdb/util_test.go b/maker/golang/xdb/util_test.go index b4478d6..4678767 100644 --- a/maker/golang/xdb/util_test.go +++ b/maker/golang/xdb/util_test.go @@ -121,6 +121,21 @@ func TestSplitSegmentV4(t *testing.T) { } } +func TestRegionFiltering(t *testing.T) { + var line = "2001:1203:31:8000::|2001:1203:31:bfff:ffff:ffff:ffff:ffff||墨西哥|瓜纳华托州||||专线用户|" + seg, err := SegmentFrom(line) + if err != nil { + t.Fatalf("failed to parse segment '%s': %s", line, err) + } + + fReg, err := RegionFiltering(seg.Region, []int{1, 2, 4, 6}) + if err != nil { + t.Fatalf("failed to filter region '%s': %s", seg.Region, err) + } + + fmt.Printf("region: %s, filtered: %s\n", seg.Region, fReg) +} + func TestSplitSegmentV6(t *testing.T) { var str = "fec0::|ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff||瑞士|弗里堡州||||专线用户|IANA" seg, err := SegmentFrom(str)