@elysiumjs/mnemosyne-drizzle

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

@elysiumjs/mnemosyne 的 Drizzle ORM 驱动程序

此软件包已被标记为弃用

Replaced by @elysiumjs/drizzle.

中文使用文档
文档目录5 节
  1. 安装
  2. 使用量
  3. 移徙钩
  4. 表格标记
  5. 许可证

@elysiumjs/mnemosyne-细雨

Drizzle ORM 驱动程序 @elysiumjs/mnemosyne。 。 。 .

安装

bun add @elysiumjs/mnemosyne-drizzle

使用量

添加 DrizzleModule 您的应用程序。 它宣布这些联系为全球服务,登记租房战略,并提供 migration:generate 财务报告和审定财务报表 migration:run 命令.

import { Application } from '@elysiumjs/core';
import { DrizzleModule } from '@elysiumjs/mnemosyne-drizzle';

@Application.register({
    modules: [
        DrizzleModule.with({
            default: 'main',
            connections: {
                main: { connection: process.env.DATABASE_URL! }
            }
        })
    ]
})
export class App extends Application {}

with() 也接受一个函数,该函数在模块启动时称为: DrizzleModule.with(() => ({ ... }))设置 tenancy 用于在schema(默认)和RLS租赁之间切换.

用增强的模型定义模式 pgTable数字 :

import { DrizzleModel, DrizzleRepository, pgTable } from '@elysiumjs/mnemosyne-drizzle';
import { uuid, varchar } from 'drizzle-orm/pg-core';

const users = pgTable('users', {
    id: uuid().primaryKey().defaultRandom(),
    name: varchar({ length: 255 }).notNull()
});

export class UserModel extends DrizzleModel(users, { supportTenancy: true }) {}
export class UserRepository extends DrizzleRepository(UserModel) {}

寄存器在表的主键旁找到行. 没有桌子 id 列,或带有复合主键,将键取为对象; key 指定要使用的其他列:

export class MembershipRepository extends DrizzleRepository(MembershipModel) {}
await memberships.find({ teamId, userId });

export class SessionRepository extends DrizzleRepository(SessionModel, { key: ['token'] }) {}
await sessions.find('abc123');

list(query, scope) 财务报告和审定财务报表 count(query, scope) 在查询的过滤器上, 带一个列必须满足的条件 :

public listFor(userId: string, query: ParsedQuery<'cursor'>) {
    return this.list(query, eq(posts.authorId, userId));
}

移徙钩

migration:run --tenant <name> 在一次交易中,在每名租户的锁下,适用租户的未决移民。 它的工作是连接由 --connection (单位:千美元)default 其驱动程序为迁移时: bun-sql, (中文(简体) ), postgres-js 财务报告和审定财务报表 node-postgres 做,还有 hyperdrive 把它们交给它包装的驱动器,它需要它的约束。 使用自定义驱动程序运行 migrations(connection),与 templateClientMigrations() 或者说 nodePostgresMigrations() 这样的客户.

迁移钩在迁移周围运行SQL,在同一交易中:当钩失败时,整个跑道被回滚. 登记在 @Migration.hook() 并列出在 services 一个模块。 每个方法都是可选的:

import type { MigrationHook, MigrationRun, MigrationStep } from '@elysiumjs/mnemosyne-drizzle';

import { Migration, sql } from '@elysiumjs/mnemosyne-drizzle';

@Migration.hook()
export class DatabaseHook implements MigrationHook {
    public async before({ db }: MigrationRun) {
        await db.execute(sql`CREATE EXTENSION IF NOT EXISTS pgcrypto`);
    }

    public async beforeEach({ name }: MigrationStep) {}

    public async afterEach({ db, name }: MigrationStep) {
        const [{ count }] = await db.execute<{ count: number }>(
            sql`SELECT count(*)::int AS count FROM pg_constraint WHERE ...`
        );
        if (count > 0) throw new Error(`${name} adds a foreign key across schemas`);
    }

    public async after({ db, tenant }: MigrationRun) {
        await db.execute(sql`GRANT USAGE ON SCHEMA ${sql.identifier(tenant)} TO app`);
    }
}
  • before 一旦租户计划及移民表存在,就运行 after 在结尾。 两者在无移民等待时都会运行,所以 after 符合必须保持的状态,例如赠款或分配.
  • beforeEach 在每次迁移之前运行 afterEach 一旦记录下来.
  • A 类 MigrationRun 持有该交易(db页:1 tenant,则 connection,则 batch,则 pending 移徙和移徙 applied 目前为止 A 类 MigrationStep 持有交易 name 财务报告和审定财务报表 path 移徙及其对受难者的影响 run。 。 。 .
  • db.execute(query) 运行一个与 sql drizzle 模板并返回其行. db.script(text) 运行一些没有参数的语句.

虎克为每个租户运行,按单元登记顺序排列: tenant 只对一些租户采取行动.

表格标记

DrizzleTable.define() 以什么标记表格 migration:generate 增加了造成移徙的移徙。 后迁相如来.

import { DrizzleTable } from '@elysiumjs/mnemosyne-drizzle';
import { pgSchema, primaryKey, text, timestamp, uuid } from 'drizzle-orm/pg-core';

const kernel = pgSchema('kernel');

export const audit = DrizzleTable.define(
    DrizzleTable.partitioned({ range: 'recorded_at' }),
    DrizzleTable.afterCreate(
        ({ qualified }) =>
            `CREATE TRIGGER audit_append_only BEFORE UPDATE OR DELETE ON ${qualified} FOR EACH ROW EXECUTE FUNCTION forbid_change()`
    )
)(
    kernel.table(
        'audit',
        {
            id: uuid('id').notNull().defaultRandom(),
            action: text('action').notNull(),
            recordedAt: timestamp('recorded_at').notNull().defaultNow()
        },
        (t) => [primaryKey({ columns: [t.id, t.recordedAt] })]
    )
);
  • DrizzleTable.partitioned({ range }) 添加 PARTITION BY RANGE (...) 页:1 CREATE TABLE。 。 。 . range 是数据库中的一列名称,函数返回一列((t) => t.recordedAt),或其中几个. 主要和独特的制约因素必须包括这些栏目.
  • DrizzleTable.afterCreate(build) 在表格创建后立即添加 SQL 作为自己的语句. build 接收 schema (单位:千美元)undefined 页:1 public页:1 name 和所引用的、合格的计谋 qualified 名称,并返回字符串或字符串 sql 模板.
  • DrizzleTable.define() 返回它标记的表格,所以其类型不变。 重新标出一个表格,增加了它的标记.

许可证

这个项目根据Apache许可证2.0版本获得许可. 见 自由主义 需要更多信息的文件.

版本与发布记录

@elysiumjs/mnemosyne-drizzle 共发布 26 个版本,首次发布于 2026/02/24;过去 12 个月发布了 26 个版本。

版本发布日期距今
0.9.1latest2026/11/121 天前
0.9.02026/11/121 天前
0.8.02026/11/121 天前
0.7.12026/11/121 天前
0.7.02026/11/112 天前
0.6.32026/11/112 天前

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

@elysiumjs/mnemosyne-drizzle 是什么?

@elysiumjs/mnemosyne 的 Drizzle ORM 驱动程序注意:该包已被作者标记为弃用——Replaced by @elysiumjs/drizzle.

如何安装 @elysiumjs/mnemosyne-drizzle?

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

@elysiumjs/mnemosyne-drizzle 支持 TypeScript 吗?

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

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

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

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

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

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

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

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

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