Przejdź do treści
Biblioteka skilli
Programowanie · Budowanie i kod

prisma

/prisma

Pomaga w pracy z Prisma ORM: schemat Prisma, migracje, typowane zapytania, filtry relacji i Accelerate, przy modelowaniu baz i zapytaniach SQL w TypeScript i JavaScript.

Repozytorium
Agent-Skills ↗
Licencja
MIT
Ostatnia zmiana repozytorium
01.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
1
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
1
Przestarzałość

Brak sygnałów. Repozytorium zmienione 01.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Pomaga w pracy z Prisma ORM: schemat Prisma, migracje, typowane zapytania, filtry relacji i Accelerate, przy modelowaniu baz i zapytaniach SQL w TypeScript i JavaScript.

Oryginalny opis (EN)

Expert Prisma ORM assistance covering Prisma schema, migrations, type-safe queries, relation filters, and Accelerate. Use when modeling databases and querying SQL in TypeScript/JavaScript.

Jak działa

  1. When to Use
  2. Quick Start
  3. Core Concepts
  4. Common Patterns
  5. Best Practices
  6. Troubleshooting
  7. References
Sekcje z nagłówków SKILL.md, w oryginale · 196 linii, 670 słów
Podgląd SKILL.md
---
name: prisma
description: Expert Prisma ORM assistance covering Prisma schema, migrations, type-safe queries, relation filters, and Accelerate. Use when modeling databases and querying SQL in TypeScript/JavaScript.
---

# Prisma

Prisma is a next-generation Node.js and TypeScript ORM featuring declarative schema modeling, automated type-safe database queries, and robust migration tooling.

## When to Use

- **TypeScript-First Database Modeling**: Declarative data models with automated migrations and end-to-end type safety.
- **Next.js & Node.js Enterprise Backends**: Developing web services with Prisma Client and PostgreSQL/MySQL/SQLite/MongoDB.
- **Safe Relational Query Composition**: Fluent queries with deeply nested relations, filtering, and pagination.
- **Prisma Accelerate & Pulse**: Edge caching, connection pooling, and real-time database change-event subscriptions.

## Quick Start

```prisma
// schema.prisma
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?
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  authorId  Int
  author    User    @relation(fields: [authorId], references: [id])
}
```

```typescript
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();

const users = await prisma.user.findMany({ include: { posts: true } });
```

## Core Concepts

### Declarative Schema Definition with Relations

Defining entities, indexes, and referential constraints:

```prisma
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?
  posts     Post[]
  createdAt DateTime  @default(now())
}

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id], onDelete: Cascade)
  authorId  Int

  @@index([authorId])
}
```

### Type-Safe CRUD & Nested Relational Queries

Reading and writing related data in single operations:

```typescript
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

async function createUserWithPost() {
  const user = await prisma.user.create({
    data: {
      email: "alex@example.com",
      name: "Alex Rivera",
      posts: {
        create: [{ title: "Getting Started with Prisma", published: true }],
      },
    },
    include: {
      posts: true,
    },
  });

  return user;
}
```

### Interactive Transactions with $transaction

Executing multi-step operations with ACID guarantees:

```typescript
async function transferFunds(
  fromUserId: number,
  toUserId: number,
  amount: number,
) {
  return await prisma.$transaction(async (tx) => {
    const sender = await tx.account.update({
      where: { userId: fromUserId },
      data: { balance: { decrement: amount } },
    });

    if (sender.balance < 0) {
      throw new Error("Insufficient funds");
    }

    const receiver = await tx.account.update({
      where: { userId: toUserId },
      data: { balance: { increment: amount } },
    });

    return { sender, receiver };
  });
}
```

## Common Patterns

### Interactive Transactions with Rollback Safety

**Problem**: Updating multiple tables where failure of any step must roll back previous changes.

**Solution**:
Use `$transaction` closure:

```typescript
const result = await prisma.$transaction(async (tx) => {
  const sender = await tx.account.update({
    where: { id: fromAccountId },
    data: { balance: { decrement: amount } },
  });

  if (sender.balance < 0) {
    throw new Error("Insufficient funds for transfer");
  }

  const recipient = await tx.account.update({
    where: { id: toAccountId },
    data: { balance: { increment: amount } },
  });

  return { sender, recipient };
});
```

## Best Practices

**Do**:

- Instantiate a single `PrismaClient` instance globally in development to prevent connection pool exhaustion.
- Use `select` clauses in queries to fetch only necessary columns instead of full rows.
- Run `prisma migrate deploy` in CI/CD production deployment pipelines.
- Leverage interactive transactions (`prisma.$transaction(async (tx) => ...)`) for ACID workflows.

**Don't**:

- Create new `PrismaClient()` instances inside serverless request handler functions.
- Run `prisma db push` in production; use `prisma migrate` to preserve migration history.
- Use `$queryRawUnsafe` with concatenated user strings; use parameterized `$queryRaw`.

## Troubleshooting

| Error                                                           | Cause                                                           | Solution                                                     |
| :-------------------------------------------------------------- | :-------------------------------------------------------------- | :----------------------------------------------------------- |
| `PrismaClientInitializationError: Can't reach database server`  | Database offline, network partition, or invalid `DATABASE_URL`. | Check database connection string and network reachability.   |
| `PrismaClientKnownRequestError: P2002 Unique constraint failed` | Attempting to insert a duplicate value for a `@unique` column.  | Catch code `P2002` and return user-friendly duplicate error. |
| `Prisma Client not initialized / outdated types`                | Schema was modified without regenerating client.                | Run `npx prisma generate` after modifying `schema.prisma`.   |

## References

- [Prisma Documentation](https://www.prisma.io/)

Wersje

RepozytoriumWynikLicencja
Ta strona · G1Joshi/Agent-Skills100MIT
TerminalSkills/skills100Apache-2.0
claude-dev-suite/claude-dev-suite100MIT
nateslabach/skills100MIT
clawic/skills90MIT

Migawka bazy z 28.10.2026 · wersja paczki 6a12d885f482 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100prisma-expert
    Dostarcza wzorce Prisma ORM dla projektu schematu, migracji, optymalizacji zapytań i modelowania relacji, przy pracy z plikami schema.prisma.
  • 100prisma-orm
    Pomaga modelować dane i pisać typowane zapytania w Prisma ORM w TypeScript: schema.prisma, prisma.config.ts, wygenerowany klient i Prisma Migrate, w tym aktualizacja z wersji 6 do 7.
  • 95prisma-helper
    Pomaga w pracy z Prisma ORM: projekt schematu, migracje, zapytania Prisma Client, relacje i zarządzanie połączeniami z bazą danych.
  • 100prisma-client-api
    Pomaga pisać i przeglądać zapytania Prisma Client, zapisy relacji, granice transakcji, filtry, paginację i surowy SQL.
  • 90nodejs-prisma
    Pomaga w pracy z Prisma ORM: modelowanie schematu, migracje, zapytania, relacje, middleware i bezpieczne wdrożenia.
  • 100prisma-azure-sql
    Podpowiada, jak używać Prisma ORM z Azure SQL Database w JavaScript i TypeScript, w tym ograniczenia konektora i migracje.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.