diff --git a/lastgersync/downloader.go b/lastgersync/downloader.go index e69de29b..d7388482 100644 --- a/lastgersync/downloader.go +++ b/lastgersync/downloader.go @@ -0,0 +1,4 @@ +package lastgersync + +type downloader struct { +} diff --git a/lastgersync/driver.go b/lastgersync/driver.go index e69de29b..505207d4 100644 --- a/lastgersync/driver.go +++ b/lastgersync/driver.go @@ -0,0 +1,3 @@ +package lastgersync + +type driver struct{} diff --git a/lastgersync/lastgersync.go b/lastgersync/lastgersync.go index e69de29b..7dd068e5 100644 --- a/lastgersync/lastgersync.go +++ b/lastgersync/lastgersync.go @@ -0,0 +1,4 @@ +package lastgersync + +type LastGERSync struct { +} diff --git a/lastgersync/processor.go b/lastgersync/processor.go index 87c70142..a66d2709 100644 --- a/lastgersync/processor.go +++ b/lastgersync/processor.go @@ -72,3 +72,41 @@ func (p *processor) GetLastProcessedBlockAndL1InfoTreeIndex(ctx context.Context) defer tx.Rollback() return p.getLastProcessedBlockAndL1InfoTreeIndexWithTx(tx) } + +func (p *processor) getLastProcessedBlockAndL1InfoTreeIndexWithTx(tx kv.Tx) (uint64, uint32, error) { + if lastProcessedBytes, err := tx.GetOne(lastProcessedTable, lastProcessedKey); err != nil { + return 0, 0, err + } else if lastProcessedBytes == nil { + return 0, 0, nil + } else { + lp := &lastProcessed{} + if err := lp.UnmarshalBinary(lastProcessedBytes); err != nil { + return 0, 0, err + } + return lp.block, lp.index, nil + } +} + +func (p *processor) updateLastProcessedBlockAndL1InfoTreeIndex(ctx context.Context, blockNum uint64, index uint32) error { + tx, err := p.db.BeginRw(ctx) + if err != nil { + return err + } + if err := p.updateLastProcessedBlockAndL1InfoTreeIndexWithTx(tx, blockNum, index); err != nil { + tx.Rollback() + return err + } + return tx.Commit() +} + +func (p *processor) updateLastProcessedBlockAndL1InfoTreeIndexWithTx(tx kv.RwTx, blockNum uint64, index uint32) error { + lp := &lastProcessed{ + block: blockNum, + index: index, + } + value, err := lp.MarshalBinary() + if err != nil { + return err + } + return tx.Put(lastProcessedTable, lastProcessedKey, value) +}