跳到主要内容

DesktopSqliteClient

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:95

通过桌面 host 访问本地 SQLite 文件的客户端。

Remarks​

它满足 SqliteClientLike,因此 RxDBAdapterSqliteBase 里的查询、事务、分支切换 与系统 schema 迁移全部原样复用——桌面路径不是另一套实现, 只是同一份契约换了条传输通道。

Implements​

Properties​

resolvedLocation​

readonly resolvedLocation: string;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:98

host 解析出的逻辑位置,仅供诊断(AC#3)。

Accessors​

sessionId​

Get Signature​

get sessionId(): string;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:100

本客户端在 host 上的会话 ID,用于把推送过来的变更事件对号入座。

Returns​

string

Methods​

addEventListener()​

addEventListener(type, handler): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:141

注册变更事件监听。

Parameters​

ParameterTypeDescription
typeSQLiteChangeType关心的变更类型
handler(event) => void事件回调

Returns​

Promise<void>

Remarks​

返回 Promise 是为了对齐 SqliteClientLike:Comlink 远端客户端即便实现是同步的也会返回 Promise,注册方一律 await,否则监听可能尚未生效就开始写库。

这里等的是传输层的 DesktopHostTransport.subscriptionReady,也就是 connect() 等过的那一次注册。正常路径上它早已落定,await 只花一个微任务; 通道事后掉线时它会 reject,注册方据此知道自己等不到事件,而不是静默地永远收不到。

Implementation of​

SqliteClientLike.addEventListener


beginSystemMigrationTransactionSql()​

beginSystemMigrationTransactionSql(): string;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:153

系统 schema 迁移使用的最强锁 SQL。

Returns​

string

host 在 open 应答里给出的语句

Implementation of​

SqliteClientLike.beginSystemMigrationTransactionSql


beginTransactionSql()​

beginTransactionSql(): string;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:147

开启普通事务的 SQL。

Returns​

string

host 在 open 应答里给出的语句

Implementation of​

SqliteClientLike.beginTransactionSql


describeBlankDatabase()​

describeBlankDatabase(): Promise<SqliteBlankDatabase>;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:175

描述 host 上新建空库本来的样子。

Returns​

Promise<SqliteBlankDatabase>

没有任何对象的描述

Remarks​

不像 wasm 客户端那样开一条临时 :memory: 连接去量:线协议只能打开应用数据目录里的库文件, 为了量一次去建临时库反而会在目标旁边留下产物。桌面 host 新建的库恒为没有用户对象: 两个 host 都只装 TEMP 通知触发器,它们不进主库的 sqlite_schema。

Implementation of​

SqliteClientLike.describeBlankDatabase


disconnect()​

disconnect(): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:194

断开会话。

Returns​

Promise<void>

Remarks​

顺序即 AC#7 的语义:先置关闭标记停止接受新任务,再等在途请求跑完, 最后才让 host 释放句柄。等的是 DesktopSqliteClient.#tail,它不会 reject ——某条在途查询失败不该把句柄一直挂住。

并发调用共享同一个 DesktopSqliteClient.#disconnectPromise,因此所有调用方 都在句柄真正释放之后才落定。只靠 #closed 布尔量做不到这一点:它一被置位,第二个调用方 立刻就成功返回,可能在库还开着时就去重命名或备份文件。

关闭失败时这个 promise 被缓存为 rejected,后续调用看到同一个 rejection,不会 静默当成已关闭,也不会自动重试——句柄是否释放没有第二个判据,装作成功只会把 「文件仍被占用」推迟到更难定位的地方爆炸。

Throws​

RxDBAdapterDesktopError host 拒绝或未能关闭该会话时

Implementation of​

SqliteClientLike.disconnect


execute()​

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

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:120

在 host 上执行 SQL。

Parameters​

ParameterTypeDescription
sqlstring待执行的 SQL
bindings?SQLiteCompatibleType[]位置绑定参数

Returns​

Promise<SqliteSuccessResult>

与本地 SQLite 后端形状一致的执行结果

Throws​

RxDBAdapterDesktopError 会话已断开,或 host 报告执行失败时

Implementation of​

SqliteClientLike.execute


setChangeEventsMuted()​

setChangeEventsMuted(muted): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:164

暂停 / 恢复本会话的变更事件采集(US-217 恢复整库时静音)。

Parameters​

ParameterTypeDescription
mutedbooleantrue 时 host 不再采集本会话的变更

Returns​

Promise<void>

Remarks​

静音落在 host 侧(协议 v2 的 mute):只在 renderer 丢弃的话,host 仍要为恢复写入的每一行 攒 rowId、把整批搬过 IPC,开销随库的大小线性增长。

Throws​

RxDBAdapterDesktopError 会话已断开,或 host 拒绝请求时

Implementation of​

SqliteClientLike.setChangeEventsMuted


version()​

version(): Promise<string>;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:126

报告 host 侧 SQLite 引擎的版本。

Returns​

Promise<string>

形如 3.50.4 的版本串

Implementation of​

SqliteClientLike.version


connect()​

static connect(
transport,
storage,
options?
): Promise<DesktopSqliteClient>;

Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:111

打开一个桌面数据库会话。

Parameters​

ParameterTypeDescription
transportDesktopHostTransport由 preload 或 worker 桥接提供的传输层
storageDesktopSqliteFileStorage桌面存储配置
options?DesktopSqliteClientOptions可选行为参数

Returns​

Promise<DesktopSqliteClient>

已连接的客户端

Throws​

RxDBAdapterDesktopError 未注入传输层、配置非法或 host 打开失败时