def decode.apply

mylsm-lsm-store@0.6.0.1 · src/ByteSstFile.bend:862

import mylsm-lsm-store@0.6.0.1/src/ByteSstFile.bend as ByteSstFile
import Base
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
import mylsm-lsm-store@0.6.0.1/src/ByteWal.bend as ByteWal

862# Applies each decoded byte mutation while rejecting count mismatches.
863def decode.apply(
864  fuel: Nat,
865  table: ByteMemTable.Table,
866  mutations: List<&1, ByteWal.Mutation>
867) -> Result<&1, &1, Error, ByteMemTable.Table>:
868  match fuel:
869    case 0n:
870      match mutations:
871        case Nil{}:
872          Done{table}
873        case Con{_, _}:
874          Fail{Malformed{}}
875    case 1n+rest:
876      match mutations:
877        case Nil{}:
878          Fail{Malformed{}}
879        case Con{mutation, tail}:
880          match mutation:
881            case ByteWal.Put{key, value}:
882              decode.apply(rest, ByteMemTable.put(table, key, value), tail)
883            case ByteWal.Delete{key}:
884              decode.apply(rest, ByteMemTable.del(table, key), tail)

Uses (8)

Used by (3)