2 min read

Prisma 101 : X PostgreSQL

Creating a PostgreSQL database in Prisma

Il est primordial que toutes les commandes terminal doivent être exécuté dans le répertoire racine du projet prisma. Autrement on risque les comportement inattendu, sans garantie d'une erreur explicite.

Créer la base de donnée PostgreSQL

Prisma Database Platform > Console > Workspace > New Project > Get started (Prisma Postgres) > Create Project

Attendez quelques instants pour que le statut de base de donnée devenir CONNECTED.

Installer Node.js

Linux

# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"

# Download and install Node.js:
nvm install 24

# Verify the Node.js version:
node -v # Should print "v24.11.0".

# Verify npm version:
npm -v # Should print "11.6.1".

Pour les autres systèmes d'exploitation, consultuer le guide officiel ici

Helloworld et modèle blanche

npx try-prisma@latest \
  --template databases/prisma-postgres \
  --name hello-prisma \
  --install npm
cd hello-prisma

Connexion

Authentification est fait par un .env fichier. Utilisons-nous l'exemple .env.example inclus en HelloWorld.

mv .env.example .env

Trouvez votre crédentiels à Project Dashboard > Connect to your database > Generate database credentials

Schema

Consulter ce guide

Dès que le schéma a été crée, exécute

npx prisma migrate dev --name init

pour initialiser la base de données

Requêtes (EN : queries)

Dans l'exemple Helloworld, vous trouvez dans le dossier src quelques exemples :

src/queries.ts
src/caching.ts

Dans chaque exemple, la première tâche est initialiser Prisma :

import { PrismaClient } from '@prisma/client';
import { withAccelerate } from '@prisma/extension-accelerate';

const prisma = new PrismaClient()
  .$extends(withAccelerate());

Puis définier et exécuter les requêtes dans un fonction main() :

async function main() {

// requêtes

}

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

main() est un emballage nécessaire qu'on puisse utiliser async.

Pour créer des entrées, on utilise create() :

  const dataEntry_A = await prisma.targetTable.create({
    data: {
      field1: 'value1',
      field2: enum1,
      field3: 20,
      //...
// create entries in related models
      relatedModel: {
        create: {
          field_A: 'value_A',
          field_B: true,
        },
      },
    },

// specify whether to create entries in related models
    include: {
      relatedModel: true,
    },
  });

Pour trouver des entrées, on utilise findMany() :

  const queryTarget = await prisma.targetTable.findMany({
    where: {
      value: { contains: "key" }
    },
    include: { relatedModel_A: true },
    cacheStrategy: {
      swr: 30, // Stale while revalidate : 30 seconds
      ttl: 60  // Time-to-live : 60 seconds
    }
  });

Pour en savoir plus sur cacheStrategy, consulter ce guide

Prisma Studio

Pour visuellement inspecter et modifier les données, utilisez Prisma Studio

npx prisma studio

Prisma Studio est aussi disponible comme application web dans la console web de prisma

En savoir plus