@botmesh/core - v2.0.0-alpha.2
    Preparing search index...

    Interface DurableKv

    Versioned document store with two sorted indexes per table.

    Contract (checked by runDurableKvConformance):

    • insert writes only when id is absent and returns the new version, else undefined;
    • replace writes only when the stored version equals version and returns the new version, else undefined (missing document or concurrent write);
    • remove deletes only when the stored version equals version;
    • range returns ids whose index score is <= max, ascending by score, at most limit. It may return ids whose document changed since (callers re-read); it must not miss a document whose committed score is <= max beyond limit.
    interface DurableKv {
        start?(): Promise<void>;
        stop?(): Promise<void>;
        get(table: string, id: string): Promise<DurableKvEntry | undefined>;
        insert(
            table: string,
            id: string,
            value: string,
            index: DurableKvIndex,
        ): Promise<string | undefined>;
        replace(
            table: string,
            id: string,
            version: string,
            value: string,
            index: DurableKvIndex,
        ): Promise<string | undefined>;
        remove(table: string, id: string, version: string): Promise<boolean>;
        range(
            table: string,
            index: keyof DurableKvIndex,
            max: number,
            limit: number,
        ): Promise<string[]>;
    }

    Implemented by

    Index
    • Parameters

      Returns Promise<string | undefined>

    • Parameters

      • table: string
      • id: string
      • version: string
      • value: string
      • index: DurableKvIndex

      Returns Promise<string | undefined>

    • Parameters

      • table: string
      • id: string
      • version: string

      Returns Promise<boolean>

    • Parameters

      Returns Promise<string[]>