feat(gl): detect duplicate transaction versions

This commit is contained in:
2026-08-29 15:56:20 +03:30
parent 3f5fd860bf
commit b14c5e2696
2 changed files with 20 additions and 0 deletions
+7
View File
@@ -32,6 +32,7 @@ func Run(ctx context.Context, repository Repository, pageSize int) (Report, erro
pageSize = 100
}
report := Report{Invalid: make([]Issue, 0)}
seen := make(map[string]string)
for offset := 0; ; offset += pageSize {
journals, err := repository.List(ctx, ledger.JournalFilter{Limit: pageSize, Offset: offset})
if err != nil {
@@ -43,6 +44,12 @@ func Run(ctx context.Context, repository Repository, pageSize int) (Report, erro
report.Invalid = append(report.Invalid, Issue{JournalID: journal.ID, Error: err.Error()})
continue
}
key := journal.SourceService + "\x00" + journal.SourceTransactionID + "\x00" + fmt.Sprint(journal.EventVersion)
if previous, exists := seen[key]; exists {
report.Invalid = append(report.Invalid, Issue{JournalID: journal.ID, Error: fmt.Sprintf("duplicate source transaction/version; first journal %s", previous)})
continue
}
seen[key] = journal.ID
report.Valid++
}
if len(journals) < pageSize {