Using Prisma with Knex.js
, A SQL Query Builder for Javascript for migrations.
Due to limitations with
prisma introspect
, we can only use PostgreSQL databases.
- Knex.js (
npm install knex / yarn add knex
) - Database
docker-compose
TODO: Add configrations for the databases, make sure that migrations is set to false in PRISMA_CONFIG
First we will create a migration file with knex migrate:make
knex migrate:make --knexfile ./server/db create_user_table
This creates a migration to server/db/migrations
, timestamped with the current date.
Next lets create some initial migration. You can use the knex
query builder, but we'll use raw SQL for simplicity.
const up = knex =>
knex.raw(`
CREATE TABLE users (
id serial primary key,
username text unique,
email text unique,
first_name text,
last_name text,
created_at timestamp not null default now(),
updated_at timestamp not null default now()
)
`);
const down = knex =>
knex.raw(`
DROP TABLE users;
`);
module.exports = {
up,
down,
};
Excellent! Now we can migrate to the latest migration we have, which is that one!
knex migrate:latest --knexfile=./server/db/knexfile.js
Next we use prisma introspect
to generate the datamodel based on the actual structure of the existing data on the PostgreSQL database.
WIP WIP