Что такое Prisma

Ответ

Prisma — это ORM (Object-Relational Mapping) для работы с базами данных. Позволяет взаимодействовать с БД через TypeScript/JavaScript, генерируя типы на основе схемы.

Особенности:

  • Поддерживает PostgreSQL, MySQL, SQLite, MongoDB
  • Автогенерация типов на основе схемы
  • Миграции встроены
  • Интуитивный API для запросов

Пример схемы:

model User {
  id    Int     @id @default(autoincrement())
  name  String
  email String  @unique
}

Пример запроса:

const users = await prisma.user.findMany({
  where: { name: 'Alice' }
});

Используется в Fullstack-приложениях, особенно с Next.js.

Ответ 18+ 🔞

А, Prisma, говоришь? Ну это ж, блядь, такая штука, чтобы с базой данных не ебаться как ломовая лошадь вручную, понимаешь? ORM называется, Object-Relational Mapping, если по-умному. Короче, переводчик между твоим TypeScript-кодом и этой, блядь, табличной хуйней в базе.

Что она умеет, эта мартышлюшка:

  • Поддерживает все эти ваши PostgreSQL, MySQL, SQLite и даже MongoDB, ёпта. Почти как универсальный ключ, только для баз.
  • Главный прикол — она типы сама генерирует, на основе твоей схемы! То есть ты описал, как там таблица выглядит, а она тебе — раз! — и готовые TypeScript-интерфейсы, чтобы ты не опечатался и не пытался email в поле age запихнуть. Удобно, блядь, волнение ебать.
  • Миграции, эти вечные боли в сраке, у неё встроены. Сказал «мигрируй» — она и мигрировала. Красота.
  • API у неё такой, что даже я, после трёх бутылок, могу запрос написать. Интуитивный, сука.

Вот смотри, как схему описываешь, просто пиздец:

model User {
  id    Int     @id @default(autoincrement()) // Это типа главный ключ, сам растёт
  name  String  // Имя, тут всё ясно
  email String  @unique // Почта, и чтобы одна на весь район, а то пидары налетят
}

Написал это, и Prisma тебе уже намекает: «Чувак, у тебя теперь есть модель User, работай с ней».

А вот как потом с этой моделью общаться, запрос простейший:

const users = await prisma.user.findMany({
  where: { name: 'Alice' } // Найди-ка мне всех этих Алис, блядь
});

И всё! Никаких этих SELECT * FROM users WHERE name = 'Alice' писать не надо. ORM сама, хитрая жопа, это сгенерирует и выполнит. А в users у тебя уже будут строго типированные объекты, потому что Prisma помнит, что у User есть id, name и email. Никаких сюрпризов.

Особенно её обожают в этих Fullstack-приложениях, которые на Next.js делают. Там вообще, блядь, рай наступает: описал схему — и на фронте, и на бэке типы одни и те же. Мечта, а не инструмент, в рот меня чих-пых.