func (db *dbImpl) addRound(id gameID, round botapi.Replay_Round) error { return db.Update(func(tx *bolt.Tx) error { b := tx.Bucket(GameBucket) key := []byte(id) data := b.Get(key) if len(data) == 0 { return errGameNotFound } msg, err := capnp.Unmarshal(copyBytes(data)) if err != nil { return err } orig, err := botapi.ReadRootReplay(msg) if err != nil { return err } newMsg, err := addReplayRound(orig, round) if err != nil { return err } newData, err := newMsg.Marshal() if err != nil { return err } return b.Put(key, newData) }) }
func (db *dbImpl) lookupGame(id gameID) (botapi.Replay, error) { var r botapi.Replay err := db.View(func(tx *bolt.Tx) error { b := tx.Bucket(GameBucket) data := b.Get([]byte(id)) if len(data) == 0 { return errGameNotFound } msg, err := capnp.Unmarshal(copyBytes(data)) if err != nil { return err } r, err = botapi.ReadRootReplay(msg) return err }) return r, err }