Interface Sqlite

interface Sqlite {
    exec: ((query: SqliteQuery) => Effect<SqliteExecResult, never, never>);
    export: (() => Effect<Uint8Array, never, never>);
    transaction: ((mode: SqliteTransactionMode) => (<A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, Sqlite | R>));
}

Properties

exec: ((query: SqliteQuery) => Effect<SqliteExecResult, never, never>)
export: (() => Effect<Uint8Array, never, never>)
transaction: ((mode: SqliteTransactionMode) => (<A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, Sqlite | R>))

Type declaration

    • (mode): (<A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, Sqlite | R>)
    • Parameters

      • mode: SqliteTransactionMode

        Use exclusive for mutations and shared for read-only queries. This shared/exclusive lock pattern allows multiple simultaneous readers but only one writer. In Evolu, this pattern also ensures that every write can be immediately read without waiting to complete. For example, we can add data on one page and then immediately redirect to another, and the data will be there.

        There is also a last mode that ensures no other transaction can run. It's for Db reset to ensure no data are accidentally saved after database wipe-out.

      Returns (<A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, Sqlite | R>)

        • <A, E, R>(effect): Effect<A, E, Sqlite | R>
        • Type Parameters

          • A
          • E
          • R

          Parameters

          • effect: Effect<A, E, R>

          Returns Effect<A, E, Sqlite | R>