package transaction import "github.com/gbl08ma/stacktrace" type writeIndexTx struct { db ExtendedDB writeIndex *writeIndex } // Commit implements [WriteIndex]. func (w *writeIndexTx) Commit() error { if w.writeIndex != nil { err := w.writeIndex.Commit() if err != nil { return stacktrace.Propagate(err) } } return nil } // Rollback implements [WriteIndex]. func (w *writeIndexTx) Rollback() error { if w.writeIndex != nil { err := w.writeIndex.Rollback() if err != nil { return stacktrace.Propagate(err) } } return nil } // IndexDB implements [WriteIndex]. func (w *writeIndexTx) IndexDB() IndexWriter { if w.writeIndex == nil { w.writeIndex = &writeIndex{ batch: w.db.NewBatch(), db: w.db, unsavedAdditions: make(map[string][]byte), unsavedRemovals: make(map[string]struct{}), } } return w.writeIndex }