@@ -7,20 +7,25 @@ import (
77 "github.com/PeerDB-io/peerdb/flow/shared/types"
88)
99
10- type StreamNumericTruncator map [string ]* CdcTableNumericTruncator
10+ type CdcTableNumericTruncator struct {
11+ TruncatorsByColumn map [string ]CdcColumnNumericTruncator
12+ DestinationTable string
13+ }
14+
15+ type StreamNumericTruncator map [string ]CdcTableNumericTruncator
1116
1217func NewStreamNumericTruncator (tableMappings []* protos.TableMapping , typesToSkip map [string ]struct {}) StreamNumericTruncator {
13- statsByTable := make (map [string ]* CdcTableNumericTruncator , len (tableMappings ))
18+ statsByTable := make (map [string ]CdcTableNumericTruncator , len (tableMappings ))
1419 for _ , tableMapping := range tableMappings {
1520 statsByTable [tableMapping .DestinationTableIdentifier ] = NewCdcTableNumericTruncator (
1621 tableMapping .DestinationTableIdentifier , tableMapping .Columns , typesToSkip )
1722 }
1823 return statsByTable
1924}
2025
21- func (ss StreamNumericTruncator ) Get (destinationTable string ) * CdcTableNumericTruncator {
26+ func (ss StreamNumericTruncator ) Get (destinationTable string ) CdcTableNumericTruncator {
2227 if ss == nil {
23- return nil
28+ return CdcTableNumericTruncator {}
2429 }
2530 truncator , ok := ss [destinationTable ]
2631 if ! ok {
@@ -38,82 +43,72 @@ func (ss StreamNumericTruncator) Warnings() shared.QRepWarnings {
3843 return warnings
3944}
4045
41- type CdcTableNumericTruncator struct {
42- TruncatorsByColumn map [string ]* CdcColumnNumericTruncator
43- DestinationTable string
44- }
45-
4646func NewCdcTableNumericTruncator (
4747 destinationTable string , columnSettings []* protos.ColumnSetting , typesToSkip map [string ]struct {},
48- ) * CdcTableNumericTruncator {
49- truncatorsByColumn := map [string ]* CdcColumnNumericTruncator {}
48+ ) CdcTableNumericTruncator {
49+ truncatorsByColumn := map [string ]CdcColumnNumericTruncator {}
5050 for _ , columnSetting := range columnSettings {
5151 if _ , ok := typesToSkip [columnSetting .DestinationType ]; ok {
5252 destinationName := columnSetting .DestinationName
5353 if destinationName == "" {
5454 destinationName = columnSetting .SourceName
5555 }
56- truncatorsByColumn [destinationName ] = & CdcColumnNumericTruncator {Skip : true }
56+ truncatorsByColumn [destinationName ] = CdcColumnNumericTruncator {}
5757 }
5858 }
59- return & CdcTableNumericTruncator {
59+ return CdcTableNumericTruncator {
6060 TruncatorsByColumn : truncatorsByColumn ,
6161 DestinationTable : destinationTable ,
6262 }
6363}
6464
65- func (ts * CdcTableNumericTruncator ) Get (destinationColumn string ) * CdcColumnNumericTruncator {
66- if ts == nil {
67- return & CdcColumnNumericTruncator {Skip : true }
65+ func (ts CdcTableNumericTruncator ) Get (destinationColumn string ) CdcColumnNumericTruncator {
66+ if ts . TruncatorsByColumn == nil {
67+ return CdcColumnNumericTruncator {}
6868 }
6969 stat , ok := ts .TruncatorsByColumn [destinationColumn ]
7070 if ! ok {
71- stat = & CdcColumnNumericTruncator {
72- Stat : qvalue .NewNumericStat (ts .DestinationTable , destinationColumn ),
71+ numericStat := qvalue .NewNumericStat (ts .DestinationTable , destinationColumn )
72+ stat = CdcColumnNumericTruncator {
73+ Stat : & numericStat ,
7374 }
7475 ts .TruncatorsByColumn [destinationColumn ] = stat
7576 }
7677 return stat
7778}
7879
79- func (ts * CdcTableNumericTruncator ) CollectWarnings (warnings * shared.QRepWarnings ) {
80+ func (ts CdcTableNumericTruncator ) CollectWarnings (warnings * shared.QRepWarnings ) {
8081 for _ , truncator := range ts .TruncatorsByColumn {
81- if ! truncator .Skip {
82+ if truncator .Stat != nil {
8283 truncator .Stat .CollectWarnings (warnings )
8384 }
8485 }
8586}
8687
87- //nolint:govet // semantically ordered
8888type CdcColumnNumericTruncator struct {
89- Skip bool
9089 Stat * qvalue.NumericStat
9190}
9291
93- type SnapshotTableNumericTruncator struct {
94- stats []* qvalue.NumericStat
95- }
92+ type SnapshotTableNumericTruncator []qvalue.NumericStat
9693
97- func NewSnapshotTableNumericTruncator (destinationTable string , fields []types.QField ) * SnapshotTableNumericTruncator {
98- stats := make ([]* qvalue.NumericStat , 0 , len (fields ))
94+ func NewSnapshotTableNumericTruncator (destinationTable string , fields []types.QField ) SnapshotTableNumericTruncator {
95+ stats := make ([]qvalue.NumericStat , 0 , len (fields ))
9996 for _ , field := range fields {
10097 stats = append (stats , qvalue .NewNumericStat (destinationTable , field .Name ))
10198 }
102- return & SnapshotTableNumericTruncator {
103- stats : stats ,
104- }
99+ return SnapshotTableNumericTruncator (stats )
105100}
106101
107- func (ts * SnapshotTableNumericTruncator ) Get (idx int ) * qvalue.NumericStat {
102+ func (ts SnapshotTableNumericTruncator ) Get (idx int ) * qvalue.NumericStat {
108103 if ts == nil {
109104 return nil
110105 }
111- return ts . stats [idx ]
106+ return & ts [idx ]
112107}
113108
114- func (ts * SnapshotTableNumericTruncator ) Warnings () shared.QRepWarnings {
109+ func (ts SnapshotTableNumericTruncator ) Warnings () shared.QRepWarnings {
115110 var warnings shared.QRepWarnings
116- for _ , stat := range ts . stats {
111+ for _ , stat := range ts {
117112 stat .CollectWarnings (& warnings )
118113 }
119114 return warnings
0 commit comments