Skip to content

Commit bb56651

Browse files
committed
fix: rename dbstate to persisted state
1 parent 2b80dbd commit bb56651

3 files changed

Lines changed: 32 additions & 26 deletions

File tree

openmeter/billing/adapter/invoicelinediff.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -67,36 +67,36 @@ func diffInvoiceLines(lines []*billing.Line) (invoiceLineDiff, error) {
6767
return fmt.Errorf("expected state usage based is nil")
6868
}
6969

70-
if item.DBState.UsageBased == nil {
70+
if item.PersistedState.UsageBased == nil {
7171
return fmt.Errorf("db state usage based is nil")
7272
}
7373

74-
if !item.ExpectedState.LineBase.Equal(item.DBState.LineBase) || !item.ExpectedState.UsageBased.Equal(item.DBState.UsageBased) {
74+
if !item.ExpectedState.LineBase.Equal(item.PersistedState.LineBase) || !item.ExpectedState.UsageBased.Equal(item.PersistedState.UsageBased) {
7575
diff.Line.NeedsUpdate(item)
7676
}
7777

7878
// Dependant entities
7979

8080
diff.UsageDiscounts = diff.UsageDiscounts.Append(entitydiff.DiffByIDEqualer(
8181
entitydiff.NewEqualersWithParent(item.ExpectedState.Discounts.Usage, item.ExpectedState),
82-
entitydiff.NewEqualersWithParent(item.DBState.Discounts.Usage, item.DBState),
82+
entitydiff.NewEqualersWithParent(item.PersistedState.Discounts.Usage, item.PersistedState),
8383
))
8484

8585
diff.AmountDiscounts = diff.AmountDiscounts.Append(entitydiff.DiffByIDEqualer(
8686
entitydiff.NewEqualersWithParent(item.ExpectedState.Discounts.Amount, item.ExpectedState),
87-
entitydiff.NewEqualersWithParent(item.DBState.Discounts.Amount, item.DBState),
87+
entitydiff.NewEqualersWithParent(item.PersistedState.Discounts.Amount, item.PersistedState),
8888
))
8989

9090
// Detailed line diffs
9191
err := entitydiff.DiffByID(entitydiff.DiffByIDInput[*billing.Line]{
92-
DBState: item.DBState.Children,
92+
DBState: item.PersistedState.Children,
9393
ExpectedState: item.ExpectedState.Children,
9494
HandleDelete: func(detailedLine *billing.Line) error {
95-
if !item.DBState.IsDeleted() {
96-
diff.AffectedLineIDs.Add(item.DBState.GetID())
95+
if !item.PersistedState.IsDeleted() {
96+
diff.AffectedLineIDs.Add(item.PersistedState.GetID())
9797
}
9898

99-
return diff.DeleteDetailedLine(detailedLine, item.DBState)
99+
return diff.DeleteDetailedLine(detailedLine, item.PersistedState)
100100
},
101101
HandleCreate: func(detailedLine *billing.Line) error {
102102
return diff.CreateDetailedLine(detailedLine, item.ExpectedState)
@@ -106,41 +106,41 @@ func diffInvoiceLines(lines []*billing.Line) (invoiceLineDiff, error) {
106106
return fmt.Errorf("detailed line expected state is nil or flat fee is nil")
107107
}
108108

109-
if detailedLine.DBState == nil || detailedLine.DBState.FlatFee == nil {
109+
if detailedLine.PersistedState == nil || detailedLine.PersistedState.FlatFee == nil {
110110
return fmt.Errorf("detailed line db state is nil or flat fee is nil")
111111
}
112112

113-
if !detailedLine.ExpectedState.LineBase.Equal(detailedLine.DBState.LineBase) || !detailedLine.ExpectedState.FlatFee.Equal(detailedLine.DBState.FlatFee) {
113+
if !detailedLine.ExpectedState.LineBase.Equal(detailedLine.PersistedState.LineBase) || !detailedLine.ExpectedState.FlatFee.Equal(detailedLine.PersistedState.FlatFee) {
114114
diff.DetailedLine.NeedsUpdate(entitydiff.DiffUpdate[detailedLineWithParent]{
115-
DBState: detailedLineWithParent{
116-
Entity: detailedLine.DBState,
117-
Parent: item.DBState,
115+
PersistedState: detailedLineWithParent{
116+
Entity: detailedLine.PersistedState,
117+
Parent: item.PersistedState,
118118
},
119119
ExpectedState: detailedLineWithParent{
120120
Entity: detailedLine.ExpectedState,
121-
Parent: item.DBState,
121+
Parent: item.PersistedState,
122122
},
123123
})
124124

125125
if !item.ExpectedState.IsDeleted() {
126-
diff.AffectedLineIDs.Add(item.DBState.ID)
126+
diff.AffectedLineIDs.Add(item.PersistedState.ID)
127127
}
128128
}
129129

130130
discountChanges := entitydiff.DiffByIDEqualer(
131131
entitydiff.NewEqualersWithParent(detailedLine.ExpectedState.Discounts.Amount, detailedLine.ExpectedState),
132-
entitydiff.NewEqualersWithParent(detailedLine.DBState.Discounts.Amount, detailedLine.DBState),
132+
entitydiff.NewEqualersWithParent(detailedLine.PersistedState.Discounts.Amount, detailedLine.PersistedState),
133133
)
134134

135135
diff.DetailedLineAmountDiscounts = diff.DetailedLineAmountDiscounts.Append(discountChanges)
136136

137137
if !discountChanges.IsEmpty() {
138138
if !item.ExpectedState.IsDeleted() {
139-
diff.AffectedLineIDs.Add(item.DBState.ID)
139+
diff.AffectedLineIDs.Add(item.PersistedState.ID)
140140
}
141141

142142
if !detailedLine.ExpectedState.IsDeleted() {
143-
diff.DetailedLineAffectedLineIDs.Add(detailedLine.DBState.ID)
143+
diff.DetailedLineAffectedLineIDs.Add(detailedLine.PersistedState.ID)
144144
}
145145
}
146146

@@ -267,8 +267,8 @@ func (d *invoiceLineDiff) GetDetailedLineDiffWithParentID() entitydiff.Diff[*bil
267267
item.ExpectedState.Entity.ParentLineID = lo.ToPtr(item.ExpectedState.Parent.GetID())
268268

269269
return entitydiff.DiffUpdate[*billing.DetailedLine]{
270-
DBState: item.DBState.Entity,
271-
ExpectedState: item.ExpectedState.Entity,
270+
PersistedState: item.PersistedState.Entity,
271+
ExpectedState: item.ExpectedState.Entity,
272272
}
273273
}),
274274
}

openmeter/billing/adapter/invoicelinediff_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ func mapDiffToIDs[T entitydiff.Entity](in entitydiff.Diff[T], getDescription fun
322322
return lo.FromPtrOr(getDescription(item), item.GetID())
323323
}),
324324
ToUpdate: lo.Map(in.Update, func(item entitydiff.DiffUpdate[T], _ int) string {
325-
return lo.FromPtrOr(getDescription(item.DBState), item.DBState.GetID())
325+
return lo.FromPtrOr(getDescription(item.PersistedState), item.PersistedState.GetID())
326326
}),
327327
ToDelete: lo.Map(in.Delete, func(item T, _ int) string {
328328
return lo.FromPtrOr(getDescription(item), item.GetID())

pkg/entitydiff/diff.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ type Entity interface {
1414
}
1515

1616
type DiffUpdate[T Entity] struct {
17-
DBState T
17+
// PersistedState is the persisted state of the entity (e.g. in database or any storage), if empty there is no persisted state
18+
PersistedState T
19+
// ExpectedState is the expected state of the entity (e.g. after the changes done by the backend)
1820
ExpectedState T
1921
}
2022

@@ -88,7 +90,11 @@ func Union[T Entity](diffs ...Diff[T]) Diff[T] {
8890
func diffByID[T Entity](expectedState, dbState []T) speculativeDiff[T] {
8991
diff := speculativeDiff[T]{}
9092

91-
dbStateByID := lo.SliceToMap(dbState, func(item T) (string, T) {
93+
itemsWithID := lo.Filter(dbState, func(item T, _ int) bool {
94+
return item.GetID() != ""
95+
})
96+
97+
dbStateByID := lo.SliceToMap(itemsWithID, func(item T) (string, T) {
9298
return item.GetID(), item
9399
})
94100

@@ -129,8 +135,8 @@ func diffByID[T Entity](expectedState, dbState []T) speculativeDiff[T] {
129135
}
130136

131137
diff.UpdateCandidates = append(diff.UpdateCandidates, DiffUpdate[T]{
132-
DBState: dbState,
133-
ExpectedState: expected,
138+
PersistedState: dbState,
139+
ExpectedState: expected,
134140
})
135141
}
136142

@@ -221,7 +227,7 @@ func DiffByIDEqualer[T EqualerEntity[T]](expectedState, dbState []T) Diff[T] {
221227
}
222228

223229
for _, update := range diff.UpdateCandidates {
224-
if !update.DBState.Equal(update.ExpectedState) {
230+
if !update.PersistedState.Equal(update.ExpectedState) {
225231
out.Update = append(out.Update, update)
226232
}
227233
}

0 commit comments

Comments
 (0)