July 08, 2021

What's new in Prisma? (Q2/21)

Learn about everything that has happened in the Prisma ecosystem and community from April to June 2021.

Overview

Releases & new features

Our engineers have been hard at work issuing new releases with many improvements and new features every two weeks. Here is an overview of the most exciting features that we have launched in the last three months.

You can stay up-to-date about all upcoming features on our roadmap.

Launched Prisma's online data browser in Early Access

Prisma's online data browser allows you to easily collaborate with your team on your data. You can:

  • Import your Prisma projects from GitHub.
  • Add other users to it, such as your teammates or your clients.
  • Assign users one of four roles: Admin, Developer, Collaborator, Viewer.
  • View and edit your data collaboratively online.

Note: The online data browser is released in Early Access. This means it is not production-ready and we are actively seeking feedback that helps us improve it. Please report any UX issues, bugs or other friction points that you encounter.

You can try it today and we would love to know your feedback!


Try Prisma's Online Data Browser

Referential Actions now enable cascading deletes and updates (Preview)

Since 2.26.0, we introduced a new feature in Preview which allow you to define cascading delete and update behavior in your Prisma schema. Here’s an example:

model User {
id String @id
posts Post[]
}
model Post {
id String @id
authorId String
author User @relation(fields: [authorId], onDelete: Cascade, onUpdate: Cascade)
}

If you run into any questions or have any feedback, we’re available in this issue.

prisma db push is now generally available 🚀

prisma db push enables you to update the database schema from the Prisma schema file, without generating any migrations.

This is especially useful when prototyping a new feature, iterating on the schema changes before creating migrations or generally if you are at stage of your development process, where you don't need to persist the schema change history via database migrations.

It is now promoted from Preview to General Availability. You can find more info on prisma db push in the official docs.

Human-readable drift diagnostics for prisma migrate dev

Since 2.25.0, Database schema drift occurs when your database schema is out of sync with your migration history, i.e. the database schema has drifted away from the source of truth.

With this release, we improve the way how the drift is printed to the console when detected in the prisma migrate dev command.

While this is thew only command that uses this notation in today's release, we plan to use it in other places where it would be useful for debugging in the future.

[*] Changed the `Color` enum
[+] Added variant `TRANSPARENT`
[-] Removed variant `RED`
[*] Changed the `Cat` table
[-] Removed column `color`
[+] Added column `vaccinated`
[*] Changed the `Dog` table
[-] Dropped the primary key on columns (id)
[-] Removed column `name`
[+] Added column `weight`
[*] Altered column `isGoodDog` (arity changed from Nullable to Required, default changed from `None` to `Some(Value(Boolean(true)))`)
[+] Added unique index on columns (weight)

New features for the Prisma Client API

We regularly add new features to the Prisma Client API to enable more powerful database queries that were previously only possible via plain SQL and the $queryRaw escape hatch.

Support for .env files in Prisma Client Go

You can now use a .env file with Prisma Client Go. This makes it easier to keep database credentials outside your Prisma schema and potentially work with multiple clients at the same time:

example/
├── .env
├── main.go
└── schema.prisma

Learn more about using the .env file in our documentation.

MongoDB gets Json and Enum Support

In 2.24.0, we added Json and enum support to the MongoDB provider for Prisma Client. Here's a sample schema with both:

prisma
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
previewFeatures = ["mongodb"]
}
model Log {
id String @id @default(dbgenerated()) @map("_id")
message String
level Level @default(Info)
meta Json
}
enum Level {
Info
Warn
Error
}

As a reminder, the mongodb provider is still in Early Access. If you'd like to use MongoDB with Prisma, please fill out this 2-minute Typeform and we'll get you an invite to our Getting Started guide and private Slack channel right away!

JSON filtering (preview)

Since 2.23.0, you can now filter rows by data inside a Json type. JSON filtering support is available in PostgreSQL and MySQL.

Assuming we have the following data in a database:

idlevelmessagemeta
2INFOapplication listening on port 3000{"host": "bob"}
3INFOupgrading account{"host": "alice", "request_id": 10}
4INFOcharging customer{"host": "alice", "amount": 20, "request_id": 10}
5ERRORcredit card expired{"host": "alice", "amount": 20, "request_id": 10}
6INFOsigning up{"host": "bob", "request_id": 1}
7INFOapplication listening on port 3000{"host": "alice"}
8INFOsigned up{"host": "bob", "email": "james@gmail.com", "request_id": 1}

We can now filter logs by the data inside the meta field.

const logs = await prisma.log.findMany({
where: {
meta: {
// path looks for the request_id key inside meta
path: ['request_id'],
// and we select rows whose request_id is 10
equals: 10,
},
},
orderBy: {
id: 'asc',
},
})

Order by an aggregate in groupBy (preview)

Since 2.21.0, you can Order by an aggregate in groupBy. Let's say you want to group your users by the city they live in and then order the results by the cities with the most users.

const userRatingsCount = await prisma.user.groupBy({
by: ['city'],
count: {
city: true,
},
orderBy: {
_count: {
city: 'desc',
},
},
}

The query returns the following data:

[
{ city: 'Berlin', count: { city: 3 } },
{ city: 'Paris', count: { city: 2 } },
{ city: 'Amsterdam', count: { city: 1 } },
]

Community

We wouldn't be where we are today without our amazing community of developers. Our Slack has more than 40k members and is a great place to ask questions, share feedback and initiate discussions all around Prisma.


Join Slack

Meetups

Prisma Meetup #6
Prisma Meetup #6

Secure your Next.js + Prisma app with Auth0 - Facundo Giuliani

Architecture of Distributed SQL | Cloud Database | Distributed Database - Jim Walker

Martina Welander & Nilufar Bava - Writing and Building the Prisma Documentation

Connect Dev Africa Meetup #1
Connect Dev Africa Meetup #1

Personal Branding for Software Engineers - Gift Egwuenu

Building large sites on the Jamstack with On-demand builders (ODB) - Ekene Eze

The Beginner’s Guide to GraphQL - Mahmoud Abdelwahab

TypeScript Berlin Meetup #6
TypeScript Berlin Meetup #6

End-to-end typesafe APIs with tRPC - Alexander Johansson

Introduction to Shelter - David Barrat

Prisma Meetup #5 + a raffle!
Prisma Meetup #5 + a raffle!

Dungeons & Dragons themed introduction to graph databases - Guy Royse

Prisma's Developer Experience - Julieta Curdi

Building a World-class Multi-region Application - Andy Woods & Adam Storm

TypeScript Berlin/Sevilla Meetup
TypeScript Berlin/Sevilla Meetup

Understanding Variance in the Typescript Type System - Tițian Cericova-Dragomir

PropTypes vs TypeScript - Dillion Megida

Elm, a delightful language for learning functional programming - Kajetan Świątek

GraphQL Berlin Meetup #22
GraphQL Berlin Meetup #22

The Case For Lighter GraphQL Client Libraries - Matheus Cardoso

Introduction to urql - Phil Plückthun

Scaling GraphQL at Zalando - Aditya Pratap Singh & Mariano Carballal

Prisma Meetup #4
Prisma Meetup #4

Prisma at Iopool - Luc Matagne

Launching the Prisma Data Platform - Spiros Martzoukos

Prisma Day 2021

Prisma Day has been a huge success and we want to thank everyone who attended and helped making it a great experience! It was a two day event of talks and workshops by members of the Prisma community.

This was our 3rd Prisma day which had 15 amazing talks and an introduction to Prisma workshop offered in 11 different languages.

We've been excited to see fantastic speakers, educators sharing their knowledge and what they're working on. We would also love to thank the amazing workshop hosts for delivering exceptional workshops.

The event covered a broad range of topics:

  • Modern Application Development: from type safety and TypeScript, or GraphQL, or JAMStack and the latest Javascript Frameworks, get an overview of the evolving tool landscape that reshapes how applications are architected, built, and deployed.
  • Database best practices: a deeper dive into considerations when building stateful applications. Discover the key considerations that give you further control over getting the most out of your data.
  • Prisma in Production: discover how users implement Prisma in the their critical applications and what Prisma has in store in the future.

If you missed the event, you can watch all the talks on our YouTube channel.

Tweets for trees

To celebrate Earth Day 🌍, we started the Tweets for trees initiative. This was an initiative where we planted a tree for every tweet about Prisma during the month of April. We planted a total of 269 trees 🌳 for our Prisma forrest.

Stickers

We love seeing laptops that are decorated with Prisma stickers, so we're shipping sticker packs for free to our community members! In this quarter, we've sent out over 300 sticker packs to developers that are excited about Prisma!


Order Stickers

Videos, livestreams & more

What's new in Prisma

Every other Thursday, Nikolas Burk and Ryan Chenkie discuss the latest Prisma release and other news from the Prisma ecosystem and community. If you want to travel back in time and learn about a past release, you can find all the shows from this quarter here:

Videos

How To Choose a Database for your App

A Practical Introduction to Prisma (Workshop | April 2021)

Announcing Early Access for Prisma's Online Data Browser

What is Prisma?

This bring us to a total of 6 livestreams and 5 new videos 🎉. You can check them out on our YouTube channel

Written content

During this quarter, we published several technical articles that you might find useful:

We also published multiple success stories of companies adopting Prisma:

Prisma appearances

This quarter, several Prisma folks have appeared on external channels and livestreams. Here's an overview of all of them:


New Prismates

Here are the awesome new Prismates who joined Prisma this quarter:


Pierre-Antoine Mills
Pierre-Antoine MillsTypeScript Engineer | April 2021
😆 Fun Fact

I'm a dark hole when it comes to good food. Friends know that delicious food may just disappear 🍰 🌀

❓ Why are you joining Prisma?

Prisma is awesome, disruptive, and a game-changer. It has been setting the bar very high around DX, which has led an awesome, and ever growing community — I find this super exciting. Prisma is also a great playground for us TypeScript developers. It's full of opportunities and challenges, but also a unique place where I can express some of my deep TypeScript knowledge. So here we are, let's type!

Jacob Drabczyk
Jacob DrabczykSoftware Engineer | April 2021
😆 Fun Fact

I once travelled across Canada by train, and can’t wait to do it again.

❓ Why are you joining Prisma?

I joined Prisma because I believe in open source software. I also think type safe languages are the future. Especially Rust, which is a joy to work with. With that in mind, applying what I’ve learned over the years to a product like Prisma feels impactful, and a way to give back to the community.

Frank Prößdorf
Frank PrößdorfSoftware Engineer | May 2021
😆 Fun Fact

I've tried to read War and Peace three times and could never make it beyond half the book🙈

❓ Why are you joining Prisma?

It's a really interesting product with a lot of potential. It's exciting to work with so many talented and nice people.

Sarah Vang Nøer
Sarah Vang NøerEngineering Manager | June 2021
😆 Fun Fact

I once did the voice of a sexy, talking painting.

❓ Why are you joining Prisma?

Prisma has an amazing people culture, and I really wanted to not just be part of it but strengthen it even further in order to empower a culture of growth, diversity, and excellent engineering practices. It's exciting to be able to have so much influence on how we take a great team and product even further

Also, we are hiring for various roles! If you're interested in joining us and becoming a Prismate, check out our jobs page.


Explore Jobs

What's next?

The best places to stay up-to-date about what we are currently working on are GitHub issues and our public roadmap. (Mongo DB support coming soon 👀)

You can also engage in conversations in our Slack channel, start a discussion on GitHub or join one of the many Prisma meetups around the world.

Join the discussion

Follow @prisma on Twitter

Don’t miss the next post!

Sign up for the Prisma newsletter