Prisma
ORM with typesafe client generation and UI
works across db types including Postgres and MongoDB
Setup*
npm install prisma --save-dev
npx prisma init #create a `schema.prisma` file
#edit schema
npx prisma generate
npx prisma migrate dev --name init #for dev, generates migrations and client
npx prisma deploy #for prod wont reset stuff, w/o protectionUsage
prisma studio #open explorerSchema
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
role Role @default(USER)
posts Post[]
profile Profile?
}
model Profile {
id Int @id @default(autoincrement())
bio String
user User @relation(fields: [userId], references: [id])
userId Int @unique
}
model Post {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
categories Category[]
}
model Category {
id Int @id @default(autoincrement())
name String
posts Post[]
}
enum Role {
USER
ADMIN
}Client*
src/utils/prisma.ts
Query
.findUniqueOrThrow
Create
Update
Advanced
pg_vector?
Transactions
Ensure all or none of operations succeed, commited when end of transaction reached
Gotchas
hidden: {not: true} doesn't return null values, https://github.com/prisma/prisma/issues/24252, instead do below
Last updated