@elysiumjs/moirai-drizzle

中文文档
0.4.1发布于 2026/11/12Apache-2.0TypeScriptES Module近 30 天下载 3770

Postgres通过 Drizzle ORM 存储@elysiumjs/moirai: idemppotency keys,出柜,收件箱和咨询锁.

此软件包已被标记为弃用

Replaced by @elysiumjs/drizzle.

中文使用文档
文档目录3 节
  1. 安装
  2. 表格
  3. 存储

@elysiumjs/moirai-细雨

用于 @elysiumjs/moirai,通过 Drizzle ORM 和 @elysiumjs/mnemosyne-drizzle。他们在动作的交易中写入,所以一个一能记录,发包行和存储的事件都会与数据一起执行.

安装

bun add @elysiumjs/moirai @elysiumjs/moirai-drizzle @elysiumjs/mnemosyne-drizzle

表格

import { moiraiTables } from '@elysiumjs/moirai-drizzle';

// In the Drizzle schema, so that migration:generate creates them.
export const billing = moiraiTables('billing');

moiraiTables(schema?, options?) 构建 idempotency_keys, (中文(简体) ), outbox, (中文(简体) ), inbox, (中文(简体) ), events 财务报告和审定财务报表 projections 表格,在一个 Postgress 中,当给出(例如,每个域名的一组表格).

与 { partitioned: true }, (中文(简体) ), events 按区域分隔 occurred_at 财务报告和审定财务报表 outbox 按范围 created_at然后,它们的主要和独特的键包括该列,以及 migration:generate 以 PARTITION BY RANGE。分区由应用程序决定:在迁移钩中创建它们,或者将其添加到创建表格的迁移中 DrizzleTable.afterCreate() 从 @elysiumjs/mnemosyne-drizzle数字 :

import { DrizzleTable } from '@elysiumjs/mnemosyne-drizzle';

const tables = moiraiTables('billing', { partitioned: true });

export const billing = {
    ...tables,
    events: DrizzleTable.define(
        DrizzleTable.afterCreate(
            ({ qualified }) => `CREATE TABLE "billing"."events_default" PARTITION OF ${qualified} DEFAULT`
        )
    )(tables.events)
};

存储

import { MoiraiModule } from '@elysiumjs/moirai';
import {
    DrizzleEventStore,
    DrizzleIdempotencyStore,
    DrizzleInboxStore,
    DrizzleOutboxStore,
    DrizzleProjectionStorage,
    PgAdvisoryLock
} from '@elysiumjs/moirai-drizzle';

MoiraiModule.with({
    idempotency: () => new DrizzleIdempotencyStore({ table: billing.idempotencyKeys }),
    outbox: () => new DrizzleOutboxStore({ table: billing.outbox }),
    inbox: () => new DrizzleInboxStore({ table: billing.inbox }),
    lock: () => new PgAdvisoryLock(),
    events: () => new DrizzleEventStore({ table: billing.events }),
    projections: () => new DrizzleProjectionStorage({ table: billing.projections })
});
  • DrizzleIdempotencyStore 保持每个键的一能动作的反应.
  • DrizzleOutboxStore 索赔到期行 FOR UPDATE SKIP LOCKED,这样几个接力就永远不走同一行.
  • DrizzleInboxStore 记录消费者处理的信息.
  • DrizzleEventStore 保留集合的事件流。 一个附件锁定它用一个交易咨询锁所写的每条流,并检查该流在第一个附加版本之前就结束,所以一个 stale 写手得到一个 ConcurrencyConflictError 即使表格中唯一的密钥跨出更多的列,例如分区密钥。 Postgres 给每个事件 position 和写它的交易的id(transaction_id) (中文(简体) ).
  • DrizzleProjectionStorage 重排表格 models 预测DrizzleModels 或 Drizzle 表格)与 DELETE 在重建的交易中,所以读者可以看到行直到它承诺,并且保留每个投影都是用它构建的版本.
  • PgAdvisoryLock 序列化共享 a 的动作 serializeBy 键,带有交易咨询锁.

每家店都卖 connection,默认为 default一个商店 table 需要匹配表格中的列 moiraiTables,并可能添加: 它可以生活在一个域自己的 pgSchema 并有另一个主要钥匙,如复合钥匙. StoreTable<T> 是它接受的类型.

版本与发布记录

@elysiumjs/moirai-drizzle 共发布 21 个版本,首次发布于 2026/11/07;过去 12 个月发布了 21 个版本。

版本发布日期距今
0.4.1latest2026/11/121 天前
0.4.02026/11/121 天前
0.3.62026/11/121 天前
0.3.52026/11/112 天前
0.3.42026/11/112 天前
0.3.32026/11/112 天前

关于 @elysiumjs/moirai-drizzle 的常见问题

@elysiumjs/moirai-drizzle 是什么?

Postgres通过 Drizzle ORM 存储@elysiumjs/moirai: idemppotency keys,出柜,收件箱和咨询锁.注意:该包已被作者标记为弃用——Replaced by @elysiumjs/drizzle.

如何安装 @elysiumjs/moirai-drizzle?

在项目目录运行 npm install @elysiumjs/moirai-drizzle,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@elysiumjs/core(^0.24.1)、@elysiumjs/moirai(^0.8.1)、@elysiumjs/mnemosyne-drizzle(^0.9.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@elysiumjs/moirai-drizzle 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@elysiumjs/moirai-drizzle 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@elysiumjs/moirai-drizzle 可以商用吗?

@elysiumjs/moirai-drizzle 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@elysiumjs/moirai-drizzle 的下载量有多少?

根据 npm 官方下载统计,@elysiumjs/moirai-drizzle 在 2026/10/14 – 2026/11/12 这 30 天内被下载 3,770 次,日均约 126 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@elysiumjs/moirai-drizzle 还在维护吗?

最新版本 0.4.1 发布于 2026/11/12(1 天前);至今共发布 21 个版本,其中过去 12 个月发布了 21 个;首次发布于 2026/11/07。作者已将其标记为弃用,新项目建议寻找替代方案。