Skip to content

A tool to generate SQL from a Prisma schema file. Using this tool, you can initialize a database at app startup or for integration tests, without relying on Prisma's npx tools.

License

Notifications You must be signed in to change notification settings

zloom/prisma-sql-gen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npm version npm downloads gitHub license

Prisma SQL generator

A tool to create SQL init script for your database from prisma shema file. This tool can help when you need to initialise fresh databse from actual prisma schema without interacting with prisma cli.

Motivation and limitations

Prisma provide way to create db with schema with following command npx prisma migrate dev.

This method have following limitations:

  • It uses migrations and performs checks so works slow when applications have migrations history.
  • It requires shell command to run which is complicates app startup logic.

This causes problems when you need to deploy fresh instance of you app or create database for testing. In such cases db should be created quickly, without migrations. Also shell not fits well if you prefer to kepp startup logic in application entrypoint.

I created this tool following above considerations. Unluck it is a bit hacky and depends on prisma internal package @prisma/migrate. I used fixed version because of breaking changes, if you have version conflict just inline this tool youself ;)

Usage

import { schemaToScript } from 'prisma-sql-gen'

//Get SQL statements to create all db objets from schema
const script = await schemaToScript('src/schema.prisma')

//You need to create database
const prisma = new PrismaClient({ datasourceUrl: `file:${name}.db` })
prisma.$executeRawUnsafe('CREATE DATABASE IF NOT EXISTS test;')

//Output format is multiline sql so you need to breakdown to statements, and filter empty lines
for (const line of script.split(';').filter(s => s)) {
  await prisma.$executeRawUnsafe(line)
}

License

This project is licensed under the MIT License

About

A tool to generate SQL from a Prisma schema file. Using this tool, you can initialize a database at app startup or for integration tests, without relying on Prisma's npx tools.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published