()
| 98 | } |
| 99 | |
| 100 | func initializeTransactionLog() error { |
| 101 | var err error |
| 102 | |
| 103 | transact, err = NewTransactionLogger("transactions.log") |
| 104 | if err != nil { |
| 105 | return fmt.Errorf("failed to create transaction logger: %w", err) |
| 106 | } |
| 107 | |
| 108 | events, errors := transact.ReadEvents() |
| 109 | count, ok, e := 0, true, Event{} |
| 110 | |
| 111 | for ok && err == nil { |
| 112 | select { |
| 113 | case err, ok = <-errors: |
| 114 | |
| 115 | case e, ok = <-events: |
| 116 | switch e.EventType { |
| 117 | case EventDelete: // Got a DELETE event! |
| 118 | err = Delete(e.Key) |
| 119 | count++ |
| 120 | case EventPut: // Got a PUT event! |
| 121 | err = Put(e.Key, e.Value) |
| 122 | count++ |
| 123 | } |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | log.Printf("%d events replayed\n", count) |
| 128 | |
| 129 | transact.Run() |
| 130 | |
| 131 | return err |
| 132 | } |
| 133 | |
| 134 | func main() { |
| 135 | // Initializes the transaction log and loads existing data, if any. |
no test coverage detected