-
-
Save laudaikinhdi/c2d6fec7806ee5bc1a14559130168fb4 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(); };