A session blockstore is a special blockstore that only pulls content from a subset of network peers which respond as having the block for the initial root CID.

Any blocks written to the blockstore as part of the session will propagate to the blockstore the session was created from.

interface SessionBlockstore {
    close(): void;
    delete(key, options?): Await<void>;
    deleteMany(source, options?): AwaitIterable<CID<unknown, number, number, Version>>;
    get(key, options?): Await<Uint8Array>;
    getAll(options?): AwaitIterable<Pair>;
    getMany(source, options?): AwaitIterable<Pair>;
    has(key, options?): Await<boolean>;
    put(key, val, options?): Await<CID<unknown, number, number, Version>>;
    putMany(source, options?): AwaitIterable<CID<unknown, number, number, Version>>;
}

Hierarchy

Methods

  • Remove the record for the passed key

    Parameters

    Returns Await<void>

    Example

    await store.delete(new Key('awesome'))
    console.log('deleted awesome content :(')
  • Retrieve all cid/block pairs from the blockstore as an unordered iterable

    Returns AwaitIterable<Pair>

    Example

    for await (const { multihash, block } of store.getAll()) {
    console.log('got:', multihash, block)
    // => got MultihashDigest('Qmfoo') Uint8Array[...]
    }
  • Check for the existence of a value for the passed key

    Parameters

    Returns Await<boolean>

    Example

    const exists = await store.has(new Key('awesome'))

    if (exists) {
    console.log('it is there')
    } else {
    console.log('it is not there')
    }
  • Store the passed value under the passed key

    Parameters

    Returns Await<CID<unknown, number, number, Version>>

    Example

    await store.put([{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }])
    
  • Store the given key/value pairs

    Returns AwaitIterable<CID<unknown, number, number, Version>>

    Example

    const source = [{ key: new Key('awesome'), value: new Uint8Array([0, 1, 2, 3]) }]

    for await (const { key, value } of store.putMany(source)) {
    console.info(`put content for key ${key}`)
    }