Jump to content

Prisma

Prisma to ORM dla TypeScripta, kt├│ry pozwala na definiowanie schematu bazy danych i modeli w pliku schema.prisma, a nast─Öpnie generuje klikenta b─Öd─ůcego typesafe, kt├│rego wykorzystasz w interakcjach z baz─ů danych ze swojego backendu.

Prisma Client

Zlokalizowany w pliku src/server/db.ts, Prisma Client to globalna zmienna (tak jak rekomendowane na stronie z najlepszymi sposobamiÔćŚ przez zesp├│┼é Prismy) wyeksportowana i gotowa do u┼╝ycia w twoich routeÔÇÖach API. Prisma Client do┼é─ůczany jest przez nas w kontek┼Ťcie tRPC. Polecamy t─ů metod─Ö, zamiast importowania go osobno w ka┼╝dym pliku.

Schema (Schemat)

Znajdziesz schemat Prismy w pliku /prisma/schema.prisma. Plik ten to miejsce, gdzie definiuje si─Ö schemat bazy danych i modele. Jest on tak┼╝e wykorzystywany podczas generowania Prisma Clienta.

Z NextAuth.js

Je┼╝eli wybierzesz NextAuth.js w po┼é─ůczeniu z Prism─ů, plik shcematu generowany jest wraz z rekomendowanymi warto┼Ťciami dla modeli User, Session, Account, czy te┼╝ VerificationToken - tak jak opisano to w dokumentacji NextAuth.jsÔćŚ.

Domy┼Ťlna Baza Danych

Domy┼Ťlna baza danych to baza SQLite, kt├│ra jest znakomita do szybkiego pisania aplikacji, takich jak ÔÇťweryfikacja konceptuÔÇŁ (ÔÇťproof-of-conceptÔÇŁ), lecz nie jest ona polecana do pisania produkcyjnych wersji projekt├│w. Typ bazy danych zmieni─ç mo┼╝esz poprzez edycj─Ö pola provider w bloku database, na postgresql lub mysql. Nast─Öpnie, aktualizuj─ůc string po┼é─ůczenia z baz─ů w pliku .env na taki, kt├│ry skieruje Prism─Ö do twojej bazy danych.

Seedowanie Bazy Danych

Seedowanie bazy danychÔćŚ to dobry spos├│b na szybkie uzupe┼énienie bazy danych testow─ů zawarto┼Ťci─ů. Aby rozpocz─ů─ç seedowanie, b─Ödziesz musia┼é stworzy─ç plik seed.ts w folderze /prisma, a nast─Öpnie doda─ç skrypt seed do pliku package.json. B─Ödziesz musia┼é tak┼╝e skorzysta─ç z jakiego┼Ť ┼Ťrodowiska uruchomieniowego dla TypeScripta. Polecamy tsxÔćŚ, kt├│ry jest bardzo szybkim ┼Ťrodowiskiem korzystaj─ůcym z esbuilda i niewymagaj─ůcym ┼╝adnej konfiguracji ESM. Runnery, takie jak ts-node, tak┼╝e zadzia┼éaj─ů.

package.json
{
  "scripts": {
    "db-seed": "NODE_ENV=development prisma db seed"
  },
  "prisma": {
    "seed": "tsx prisma/seed.ts"
  }
}
prisma/seed.ts
import { prisma } from "../src/server/db/client";

async function main() {
  const id = "cl9ebqhxk00003b600tymydho";
  await prisma.example.upsert({
    where: {
      id,
    },
    create: {
      id,
    },
    update: {},
  });
}

main()
  .then(async () => {
    await prisma.$disconnect();
  })
  .catch(async (e) => {
    console.error(e);
    await prisma.$disconnect();
    process.exit(1);
  });

Nast─Öpnie uruchom po prostu pnpm db-seed (lub npm/yarn) aby wykona─ç seedowanie bazy danych.

Przydatne Zasoby

Zas├│bLink
Dokumentacja Prismyhttps://www.prisma.io/docs/ÔćŚ
GitHub Prismyhttps://github.com/prisma/prismaÔćŚ
Prisma Migrate Playgroundhttps://playground.prisma.io/guidesÔćŚ
Adapter NextAuth.JS dla Prismyhttps://next-auth.js.org/adapters/prismaÔćŚ
Poradnik Po┼é─ůczenia z Planetscalehttps://www.prisma.io/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases/connect-your-database-typescript-planetscaleÔćŚ

Recent Contributors To This Page