61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package models
|
|
|
|
type DiffRecordList struct {
|
|
Ledgerid string `json:"ledgerid"`
|
|
DiffRecords []*DiffRecord `json:"diffRecords"`
|
|
}
|
|
|
|
// DiffRecord represents a diverging record in json
|
|
type DiffRecord struct {
|
|
Namespace string `json:"namespace,omitempty"`
|
|
Key string `json:"key,omitempty"`
|
|
Hashed bool `json:"hashed"`
|
|
Record1 *SnapshotRecord `json:"snapshotrecord1"`
|
|
Record2 *SnapshotRecord `json:"snapshotrecord2"`
|
|
}
|
|
|
|
// Get later height of two snapshotRecords from a DiffRecord. Used for identifying transactions in identifytxs tool.
|
|
// Height of 0, 0 indicates both records are nil so there is no height.
|
|
func (d *DiffRecord) GetLaterHeight() (blockNum uint64, txNum uint64) {
|
|
r := laterRecord(d.Record1, d.Record2)
|
|
if r == nil {
|
|
return 0, 0
|
|
}
|
|
return r.BlockNum, r.TxNum
|
|
}
|
|
|
|
// SnapshotRecord represents the data of a snapshot record in json
|
|
type SnapshotRecord struct {
|
|
Value string `json:"value"`
|
|
BlockNum uint64 `json:"blockNum"`
|
|
TxNum uint64 `json:"txNum"`
|
|
}
|
|
|
|
// Returns the snapshotRecord with the later height
|
|
func laterRecord(r1 *SnapshotRecord, r2 *SnapshotRecord) *SnapshotRecord {
|
|
if r1 == nil {
|
|
return r2
|
|
}
|
|
if r2 == nil {
|
|
return r1
|
|
}
|
|
// Determine later record by block height
|
|
if r1.BlockNum > r2.BlockNum {
|
|
return r1
|
|
}
|
|
if r2.BlockNum > r1.BlockNum {
|
|
return r2
|
|
}
|
|
// Record block heights are the same, determine later transaction
|
|
if r1.TxNum > r2.TxNum {
|
|
return r1
|
|
}
|
|
return r2
|
|
}
|