Prisma Fabbrica 使用指南

Prisma Fabbrica 使用指南

prisma-fabbrica Prisma generator to define model factory prisma-fabbrica 项目地址: https://gitcode.com/gh_mirrors/pr/prisma-fabbrica

1. 项目介绍

Prisma Fabbrica 是一个用于定义模型工厂的 Prisma 生成器。它可以帮助开发者在测试和数据填充过程中快速生成模型实例,简化数据创建和管理的复杂性。通过 Prisma Fabbrica,开发者可以轻松定义模型的默认值、序列字段、关系连接等,从而提高开发效率。

2. 项目快速启动

安装

首先,通过 npm 安装 prisma-fabbrica

npm install @quramy/prisma-fabbrica --save-dev

配置

prisma/schema.prisma 文件中添加 prisma-fabbrica 生成器配置:

generator client {
  provider = "prisma-client-js"
}

generator fabbrica {
  provider = "prisma-fabbrica"
}

生成代码

运行以下命令生成 JavaScript 和 TypeScript 类型定义文件:

npx prisma generate

生成的文件将位于 src/__generated__/fabbrica 目录下。

定义工厂

假设你的 schema.prisma 文件中有以下 User 模型:

model User {
  id    String @id
  name  String
  posts Post[]
}

你可以通过以下方式定义 User 工厂:

// src/seed.ts
import { PrismaClient } from "@prisma/client";
import { initialize, defineUserFactory } from "src/__generated__/fabbrica";

const prisma = new PrismaClient();
initialize({ prisma });

async function seed() {
  const UserFactory = defineUserFactory();
  await UserFactory.create();
  await UserFactory.create({ name: "Alice" });
  await UserFactory.create({ id: "user002", name: "Bob" });

  console.log(await prisma.user.count()); // -> 3
}

seed();

3. 应用案例和最佳实践

字段默认值

defineUserFactory 会自动填充模型中所有必需的标量字段。例如,以下 User 模型有 idemailfirstNamelastName 等必需字段:

model User {
  id        Int      @id
  email     String   @unique
  firstName String
  lastName  String
  middleName String?
  createdAt DateTime @default(now())
}

使用 defineUserFactory 创建实例时,这些字段会自动填充:

const UserFactory = defineUserFactory();
await UserFactory.create();

使用序列字段

seq 参数可以为标量字段提供递增的序列号:

const UserFactory = defineUserFactory({
  defaultData: async ({ seq }) => ({
    id: `user${seq.toString().padStart(3, "0")}`,
  }),
});

await UserFactory.create(); // 插入 id: "user000"
await UserFactory.create(); // 插入 id: "user001"
await UserFactory.create(); // 插入 id: "user002"

创建多个实例

createList 方法可以一次性创建多个实例:

await UserFactory.createList(3);

关系连接

在定义工厂时,可以通过 related model factory 自动连接关系字段:

const UserFactory = defineUserFactory();
const PostFactory = definePostFactory({
  defaultData: {
    author: UserFactory,
  },
});

4. 典型生态项目

Jest-Prisma

如果你使用 @quramy/jest-prisma@quramy/jest-prisma-node,可以通过以下配置将 prisma-fabbrica 集成到 Jest 测试环境中:

// jest.config.mjs
export default {
  preset: "ts-jest",
  transform: {
    "^.+\\.tsx?$": "ts-jest",
  },
  testEnvironment: "@quramy/jest-prisma/environment",
  setupFilesAfterEnv: ["@quramy/prisma-fabbrica/scripts/jest-prisma"],
};

这个配置会自动初始化 prisma-fabbrica,并将 Prisma 客户端配置为与 jest-prisma 管理的交易集成。

prisma-fabbrica Prisma generator to define model factory prisma-fabbrica 项目地址: https://gitcode.com/gh_mirrors/pr/prisma-fabbrica

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孔岱怀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值