跳到主要内容

Oo1ClientBase<TLoadOptions>

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:86

包装 oo1.DB 风格运行时(@sqlite.org/sqlite-wasm、@sqliteai/sqlite-wasm 等)的 SQLite 客户端基类。

为什么叫 Oo1​

oo1 是上游官方 SQLite WASM 的 Object Oriented API v1 命名 (sqlite3.oo1.DB / OpfsDb),不是本仓库自创缩写。 凡走这层面的适配器(sqlite / sqliteai)都继承本基类; wa-sqlite 走 C API,不复用这里。

子类只需实现 loadModule 与 clientName; 其余部分(队列管理、init/disconnect 生命周期、变更事件批处理、 自定义函数注册、OPFS fallback)都在这里。

See​

Oo1Static — oo1 运行时最小契约

Extends​

Extended by​

Type Parameters​

Type ParameterDefault type
TLoadOptions extends Oo1ClientLoadOptionsOo1ClientLoadOptions

Implements​

Constructors​

Constructor​

new Oo1ClientBase<TLoadOptions>(): Oo1ClientBase<TLoadOptions>;

Returns​

Oo1ClientBase<TLoadOptions>

Inherited from​

EventDispatcher.constructor

Properties​

db​

protected db: Oo1Database;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:100


sqlite3​

protected sqlite3: Oo1Static;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:99

Accessors​

clientName​

Get Signature​

get abstract protected clientName(): string;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:103

错误信息中使用的简短标识(例如 'sqliteai')。

Returns​

string

Methods​

addEventListener()​

addEventListener(type, handler): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:109

对外覆盖,与 SqliteClientLike 签名保持一致。 委托给 EventDispatcher 中的泛型实现。

Parameters​

ParameterType
typeSQLiteChangeType
handler(event) => void

Returns​

void

Implementation of​

SqliteClientLike.addEventListener

Overrides​

EventDispatcher.addEventListener


beginSystemMigrationTransactionSql()​

beginSystemMigrationTransactionSql(): string;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:160

获取系统 schema 升级时后端支持的最高强度锁。

Returns​

string

Implementation of​

SqliteClientLike.beginSystemMigrationTransactionSql


beginTransactionSql()​

beginTransactionSql(): string;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:147

开启事务时使用的 SQL,默认 'BEGIN;'。

Returns​

string

Remarks​

后端可覆写以插入自身特有的锁策略前置语句——例如 wa-sqlite 的 IDBBatchAtomicVFS/OPFSAdaptiveVFS 选用 shared+hint 锁策略时, 需要在拿共享锁阶段先发 PRAGMA write_hint; 才能在 SHARED→RESERVED 升级时避免 SQLITE_BUSY(见 wa-sqlite WebLocksMixin)。

Comlink 远端客户端即便实现是同步的也会返回 Promise,注册方必须 await。

Implementation of​

SqliteClientLike.beginTransactionSql


describeBlankDatabase()​

describeBlankDatabase(): Promise<SqliteBlankDatabase>;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:169

在同一个模块上开一条临时 :memory: 连接,描述引擎新建空库本来的样子。

Returns​

Promise<SqliteBlankDatabase>

空库的对象列表与描述

Implementation of​

SqliteClientLike.describeBlankDatabase


disconnect()​

disconnect(): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:180

Returns​

Promise<void>

Implementation of​

SqliteClientLike.disconnect


dispatchEvent()​

dispatchEvent<T>(type, data): void;

Defined in: packages/utils/dist/tools/event.d.ts:60

同步派发事件。

遍历的是快照而非实时集合:监听器在处理过程中 addEventListener 不会自喂 本轮迭代(否则单次同步派发可被第三方监听器无限延长,UTL-011)。

Type Parameters​

Type Parameter
T extends keyof Oo1ClientEvents

Parameters​

ParameterTypeDescription
typeT事件名
dataOo1ClientEvents[T]事件数据

Returns​

void

Throws​

监听器抛出的任意异常,原样向上冒泡;其后的监听器不再执行

Inherited from​

EventDispatcher.dispatchEvent


execute()​

execute(sql, bindings?): Promise<SqliteSuccessResult>;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:226

执行 SQL。

Parameters​

ParameterTypeDescription
sqlstringSQL 语句
bindings?SQLiteCompatibleType[]绑定参数

Returns​

Promise<SqliteSuccessResult>

执行结果

Throws​

客户端已断开,或尚未 init 完成

Implementation of​

SqliteClientLike.execute


hasEventListener()​

hasEventListener<T>(type, listener): boolean;

Defined in: packages/utils/dist/tools/event.d.ts:40

查询监听器是否已注册。不会为未知事件名建立集合。

Type Parameters​

Type Parameter
T extends keyof Oo1ClientEvents

Parameters​

ParameterTypeDescription
typeT事件名
listenerEventListener<Oo1ClientEvents[T]>监听器

Returns​

boolean

是否已注册

Inherited from​

EventDispatcher.hasEventListener


init()​

init(dbName, options?): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:113

Parameters​

ParameterType
dbNamestring
options?TLoadOptions

Returns​

Promise<void>


loadModule()​

abstract protected loadModule(options?): Promise<Oo1Static>;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:239

加载并初始化底层的 sqlite-wasm 模块。

Parameters​

ParameterType
options?TLoadOptions

Returns​

Promise<Oo1Static>


normalizeRowId()​

protected normalizeRowId(rowId): bigint;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:247

把 sqlite3_update_hook 输出的 rowId 统一成 bigint。

@sqlite.org/sqlite-wasm 在 rowId 较小时可能给出普通 number, 官方客户端会覆盖本方法强制转成 bigint;运行时本身总输出 bigint 的子类可以保留默认。

Parameters​

ParameterType
rowIdnumber | bigint

Returns​

bigint


removeAllEventListeners()​

removeAllEventListeners(): void;

Defined in: packages/utils/dist/tools/event.d.ts:62

清空所有事件名下的全部监听器。

Returns​

void

Inherited from​

EventDispatcher.removeAllEventListeners


removeEventListener()​

removeEventListener<T>(type, listener): void;

Defined in: packages/utils/dist/tools/event.d.ts:49

移除监听器。未知事件名或未注册的监听器都是无操作,且不会建立空集合。

若在 dispatchEvent 过程中移除,被移除者仍会收到本次事件(快照语义)。

Type Parameters​

Type Parameter
T extends keyof Oo1ClientEvents

Parameters​

ParameterTypeDescription
typeT事件名
listenerEventListener<Oo1ClientEvents[T]>监听器

Returns​

void

Inherited from​

EventDispatcher.removeEventListener


setChangeEventsMuted()​

setChangeEventsMuted(muted): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:156

暂停 / 恢复变更事件采集。

Parameters​

ParameterTypeDescription
mutedbooleantrue 时 update hook 直接忽略写入,不入批也不派发

Returns​

void

Implementation of​

SqliteClientLike.setChangeEventsMuted


version()​

version(): Promise<string>;

Defined in: packages/rxdb-adapter-sqlite-core/src/Oo1ClientBase.ts:142

Returns​

Promise<string>

Implementation of​

SqliteClientLike.version