prismaでfactoryboyみたいなやつが作りたい

作りたい。 factoryboyをご存知ですか? factory_boy — Factory Boy stable documentation pythonでテスト実装する際、ダミーデータの実装に役に立つライブラリなのですが、これがまー使いやすい。 ので、prismaでシード作るときにも同じような感じで使いたいなーと思い、実現方法を考えてみました。 factory-botを使ってみる 調べてみると、factory-botというのがありました。 Git これを使ってみたいと思います。 とりあえずディレクトリを作って初期化します。 mkdir prisma-factory-bot cd prisma-factory-bot npm init 次に、typescriptの実行基盤とお目当てのfactory-botをインストールします。 npm i -D typescript ts-node @types/node npm i factory-bot これで準備できました。 最も簡易的な形の実装は以下のとおりです。 import { factory } from "factory-bot"; class User { username: string; score: number; constructor(attrs: { username: string, score: number }) { this.username = attrs.username; this.score = attrs.score; } } factory.define('user', User, { username: 'Bob', score: 50, }); (async () => { const user = await factory.build<User>('user'); console.log(user); })(); とりあえず動く形になりました。 実行すると、生成されたUserが表示されます。 User { username: 'Bob', score: 50 } bulidMany関数を使うと、複数のモデルをいっぺんに作ることができます。 ...

8月 23, 2023 · にあえん

prismaでデータがあるテーブルの列追加をするパターンを考える

Prisma、便利ですよね。 マイグレーションを重ねていくと、あるテーブルに対して列追加しなければいけないこともあると思います。 そういったときにどう対処すればよいか考えてみました。 検証用のパッケージを作成する とりあえず検証用のパッケージだけ作成します。 mkdir prisma-paradigm-shift-pattern cd prisma-paradigm-shift-pattern yarn add -D typescript ts-node @types/node prisma yarn prisma init --datasource-provider sqlite prisma.schemaには、prismaのQuickStartにあるモデルを持ってきます。 // 参考モデル // https://www.prisma.io/docs/getting-started/quickstart model User { id Int @id @default(autoincrement()) email String @unique name String? posts Post[] } model Post { id Int @id @default(autoincrement()) title String content String? published Boolean @default(false) author User @relation(fields: [authorId], references: [id]) authorId Int } 一度最初のマイグレーションだけしておきましょう。 ...

8月 10, 2023 · にあえん