🗑️

Prisma でテーブル全部 Truncate する方法

2021/11/25に公開

Foreign Key の順序を考慮してないので CASCADE しておく必要があります。
https://www.prisma.io/docs/guides/database/advanced-database-tasks/cascading-deletes/mysql#3-create-two-tables-with-a-foreign-key-and-cascade-deletion-action

const prisma = new PrismaClient({
  datasources: {
    db: { url: "あなたの DB の URL" },
  },
});

const allProperties = Object.keys(prisma);
  // 関数たちを取り除いたものがモデル名
  // 関数は全て "$" "_" 始まりなのを利用している
const modelNames = allProperties.filter(
  (x) => !(typeof x === "string" && (x.startsWith("$") || x.startsWith("_")))
);


modelNames.forEach(async (modelName: string | symbol) => {
    prisma[modelName].deleteMany();
});

Discussion