跳到主要内容

rxdb-adapter-sqliteai

@aiao/rxdb 的 sqliteai 存储适配器,为核心引擎提供基于 sqliteai 运行时的 SQLite 后端。

安装​

pnpm add @aiao/rxdb @aiao/rxdb-adapter-sqliteai rxjs

用法​

import { createSqliteClient, RxDBAdapterSqliteai, sqliteaiLoad } from '@aiao/rxdb-adapter-sqliteai';
  • RxDBAdapterSqliteai:接入 @aiao/rxdb 的适配器实现
  • createSqliteClient / SqliteaiClient:sqliteai 客户端
  • sqliteaiLoad:运行时加载
  • 类型:SqliteaiOptions

适配器共享内核(表名解析、规则编译、基础 Repository)来自 @aiao/rxdb-adapter-sqlite-core。

备份与恢复​

backup() / restore() / cleanupIncompleteRestore() 由 @aiao/rxdb-adapter-sqlite-core 提供,语义与错误码见那里。

配置备份 / 恢复
不开 opfs✅ 内存库
opfs: true✅ OPFS,持久化 journal_mode 为 delete
opfs: true, opfsFallback: 'memory'❌ unsupported_combination(opfsFallback):OPFS 打不开时静默落到内存,恢复目标不确定

内置的 vector 与 memory 扩展在每条新连接上建出自己的表(_sqliteai_vector、dbmem_* 及其 FTS5 影子表,部分带初始行)。 这些表连同初始行就是「空库」本来的样子:恢复只把恰好等于新建空库的目标当作空的,写进这些表的用户数据随归档往返。

在 Worker 里跑时,每次连接租用 Worker 的一条独立子端口:恢复用一条连接写库,之后的 connect() 在同一个 Worker 上再开一条。 同一个 workerInstance 同一时间只借给一条连接:第二条并发连接会抛 Worker transport already has an active SQLite client。 直接调用 createSqliteClient 时,先 await client.disconnect(),再调用 @aiao/rxdb-adapter-sqlite-core 导出的 releaseComlinkProxy(client) 归还子端口,之后才能在同一个 Worker 上重连;适配器已在 disconnect() 内自动完成这一步。

文档​

License​

MIT

Classes​

ClassDescription
RxDBAdapterSqliteai基于 @sqliteai/sqlite-wasm 的 RxDB 本地存储适配器。
RxDBAdapterSqliteErrorRxDB SQLite 适配器错误类
SqliteaiClientSqliteAI 的 oo1 客户端实现。
SqliteRepository操作实体仓库

Interfaces​

InterfaceDescription
GenerateSqlResultSQL 生成结果:完整的 SQL 语句与可选的参数绑定。
SqliteaiOptionsSqliteAI 适配器完整选项(含可选的自定义 Repository 注册表)。

Type Aliases​

Type AliasDescription
SqliteaiLoadOptionssqliteaiLoad 接受的运行期选项子集(剥离 worker / repository 配置)。
SqliteaiRepositoryConstructor自定义 Repository 类的构造器签名(用户可覆盖默认 Repository / TreeRepository)。

Variables​

VariableDescription
BATCH_TIMEOUT变更事件批处理超时档位(毫秒)。 越短延迟越低但 CPU 唤醒越频繁;越长越省电但 UI 响应延后。 - IMMEDIATE (0): 同步派发,仅在测试场景使用 - FAST (4): 约一帧内合并 - BALANCED (16): 默认值,约一帧(60fps) - POWER_SAVE (50): 移动端 / 后台场景
buildRuleGroup生成 ruleGroup sql 查询条件
ROWIDsqlite 行 id 列名
sqliteGetTableName获取表名
sqliteGetTableNameByMetadata通过元数据获取表名

Functions​

FunctionDescription
createSqliteClient创建 SqliteAI 客户端实例并完成初始化。
sqliteaiLoad加载 SqliteAI WASM 模块(带模块级缓存)。