跳转到内容

SDK 快速开始

本指南假设应用已经拥有一个包含 SQLite 数据库和相关文件的目录。

  1. 安装 SDK。

    Terminal window
    pnpm add @eidos.space/graft
  2. 打开并初始化仓库。

    const { RepositorySession } = require("@eidos.space/graft");
    const session = await RepositorySession.open(appDataRoot, {
    identity: {
    name: "Mayne",
    },
    });
    await session.init();

    init() 会在应用工作区旁创建 .graft/。新仓库只需调用一次。 可选的 identity 是当前 session 的内存覆盖,用于 commit 和 ref identity;如果希望 身份持久保存在仓库中,请使用 configSet("user.name", ...)configSet("user.email", ...)

  3. 读取状态。

    const result = await session.statusIncremental();
    console.log(result.status.paths);

    每个变更路径都会返回仓库相对路径、内容类型、存储方式,以及暂存状态。

  4. 暂存并提交当前应用状态。

    await session.addAll();
    const commit = await session.commit("initial app state");
    console.log(commit);

    addAll() 把已提交的 SQLite 事务和应用文件捕获到 index,commit() 再从 该暂存状态推进历史。

  5. 关闭会话。

    await session.close();

    生产代码应使用 try/finally,确保正常关闭时释放仓库 runtime。

const status = await session.statusIncremental();
const paths = status.status.paths.map(({ path }) => path);
const diff = await session.diffPaths({
paths,
rows: true,
limit: 100,
});

对于大型 SQLite 数据库,先请求表级摘要,等用户打开某张表时再加载行。完整的 diffSqlitePaths 结果类型以软件包的 TypeScript 声明为准。