abeshi blog
カテゴリーで検索

prismaでseedファイルでサンプルデータを作成する

2022年2月3日



prismaをinstallしている程で話を進めていきます。

seedファイルの作成



prisma/seeds/seed.ts

import { Prisma, PrismaClient } from "@prisma/client";
import moment from "moment";


const prisma = new PrismaClient();


const usersData: Prisma.UserCreateInput[] = [
  {
    email: "example1@test.com",
    name: "ユーザー1",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example2@test.com",
    name: "ユーザー2",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example3@test.com",
    name: "ユーザー3",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example4@test.com",
    name: "ユーザー4",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example5@test.com",
    name: "ユーザー5",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example6@test.com",
    name: "ユーザー6",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example7@test.com",
    name: "ユーザー7",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example8@test.com",
    name: "ユーザー8",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example9@test.com",
    name: "ユーザー9",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example10@test.com",
    name: "ユーザー10",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example11@test.com",
    name: "ユーザー11",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example12@test.com",
    name: "ユーザー12",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example13@test.com",
    name: "ユーザー13",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example14@test.com",
    name: "ユーザー14",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example15@test.com",
    name: "ユーザー15",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example16@test.com",
    name: "ユーザー16",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example17@test.com",
    name: "ユーザー17",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example18@test.com",
    name: "ユーザー18",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example19@test.com",
    name: "ユーザー19",
    description: "宜しくお願いします",
    createdAt: moment().format()
  },
  {
    email: "example20@test.com",
    name: "ユーザー20",
    description: "宜しくお願いします",
    createdAt: moment().format()
  }
];


async function createSeedData() {
  for (const user of usersData) {
    await prisma.user.create({ data: user });
  }
}

createSeedData()
  .catch((error) => {
    console.error(error);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect()
  });



packge.jsonにコマンドを追加



packge.json

"prisma": {
  "seed": "npx ts-node prisma/seeds/seed.ts"
},




npx prisma db seed



これでseedデータが流し込めます。


下記でもmigrateがresetされ自動的にseedデータが流し込まれます。(ただしリセットされるので注意)

npx prisma db migrate reset