-
-
Save abhimskywalker/ff014efcd52733f9cde8ae4e4f1613d9 to your computer and use it in GitHub Desktop.
Revisions
-
rsaryev revised this gist
Jan 15, 2022 . No changes.There are no files selected for viewing
-
rsaryev created this gist
Jan 15, 2022 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,41 @@ import { Prisma, PrismaClient } from '@prisma/client'; import { exec } from 'child_process'; import * as util from 'util'; const execPromisify = util.promisify(exec); const prisma = new PrismaClient(); const tables = Prisma.dmmf.datamodel.models .map((model) => model.dbName) .filter((table) => table); const clearMysql = async () => { await prisma.$transaction([ prisma.$executeRaw`SET FOREIGN_KEY_CHECKS = 0;`, ...tables.map((table) => prisma.$executeRawUnsafe(`TRUNCATE ${table};`), ), prisma.$executeRaw`SET FOREIGN_KEY_CHECKS = 1;`, ]); }; const clearPostgres = async () => { await prisma.$transaction([ ...tables.map((table) => prisma.$executeRawUnsafe(`TRUNCATE ${table} CASCADE;`), ), ]); }; const clearDefault = async () => execPromisify('npx prisma migrate reset --force --skip-seed'); export const clear = async (provider: string) => { const executeClear = { mysql: clearMysql, postgres: clearPostgres, }; const execute = executeClear[provider] || clearDefault; return execute(); };