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
| Parameter | Type | Description |
|---|---|---|
type | SQLiteChangeType | 关心的变更类型 |
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
execute()
execute(sql, bindings?): Promise<SqliteSuccessResult>;
Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:120
在 host 上执行 SQL。
Parameters
| Parameter | Type | Description |
|---|---|---|
sql | string | 待执行的 SQL |
bindings? | SQLiteCompatibleType[] | 位置绑定参数 |
Returns
Promise<SqliteSuccessResult>
与本地 SQLite 后端形状一致的执行结果
Throws
RxDBAdapterDesktopError 会话已断开,或 host 报告执行失败时
Implementation of
setChangeEventsMuted()
setChangeEventsMuted(muted): Promise<void>;
Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:164
暂停 / 恢复本会话的变更事件采集(US-217 恢复整库时静音)。
Parameters
| Parameter | Type | Description |
|---|---|---|
muted | boolean | true 时 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
connect()
static connect(
transport,
storage,
options?
): Promise<DesktopSqliteClient>;
Defined in: packages/rxdb-adapter-sqlite-core/dist/desktop/desktop-sqlite-client.d.ts:111
打开一个桌面数据库会话。
Parameters
| Parameter | Type | Description |
|---|---|---|
transport | DesktopHostTransport | 由 preload 或 worker 桥接提供的传输层 |
storage | DesktopSqliteFileStorage | 桌面存储配置 |
options? | DesktopSqliteClientOptions | 可选行为参数 |
Returns
Promise<DesktopSqliteClient>
已连接的客户端
Throws
RxDBAdapterDesktopError 未注入传输层、配置非法或 host 打开失败时