00
:
00
:
00
:
00
Corso SEO AI - Usa SEOEMAIL al checkout per il 30% di sconto

Installazione

Installazione di Prisma

Prisma si installa come dipendenza di sviluppo. Il client generato viene poi usato come dipendenza di produzione.

1. Installare le dipendenze

# Prisma CLI come dev dependency
npm install prisma --save-dev

# Prisma Client come dependency di produzione
npm install @prisma/client

2. Inizializzare Prisma

Il comando init crea la struttura base del progetto Prisma:

# Inizializzazione con PostgreSQL (default)
npx prisma init

# Specificare un provider diverso
npx prisma init --datasource-provider sqlite
npx prisma init --datasource-provider mysql
npx prisma init --datasource-provider mongodb

Questo crea due file:

  • prisma/schema.prisma: il file di definizione dello schema.
  • .env: il file per le variabili d’ambiente (contiene DATABASE_URL).

3. Configurare il Database

PostgreSQL

DATABASE_URL="postgresql://utente:password@localhost:5432/nome_database?schema=public"

MySQL

DATABASE_URL="mysql://utente:password@localhost:3306/nome_database"

SQLite

DATABASE_URL="file:./dev.db"

Lo schema si aggiorna di conseguenza:

datasource db {
  provider = "sqlite"  // "postgresql", "mysql", "mongodb", "sqlserver"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

4. Definire un Modello Iniziale

Aggiungi almeno un modello per testare la configurazione:

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  createdAt DateTime @default(now())
}

5. Applicare lo Schema e Generare il Client

# In sviluppo: crea migrazione + applica + genera client
npx prisma migrate dev --name init

# Alternativa rapida senza migrazioni (prototipazione)
npx prisma db push

6. Generare il Client Manualmente

Se modifichi lo schema senza migrare, puoi rigenerare il client separatamente:

npx prisma generate

Questo aggiorna i tipi TypeScript in node_modules/@prisma/client.

7. Verificare il Funzionamento

Crea un file di test per assicurarti che tutto funzioni:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  const user = await prisma.user.create({
    data: {
      email: 'test@example.com',
      name: 'Test User',
    },
  })
  console.log('Utente creato:', user)

  const users = await prisma.user.findMany()
  console.log('Tutti gli utenti:', users)
}

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

Setup con TypeScript

Se il progetto non ha ancora TypeScript configurato:

npm install typescript ts-node @types/node --save-dev
npx tsc --init

Nel tsconfig.json assicurati di avere:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "outDir": "./dist"
  }
}

Comandi CLI Essenziali

Comando Descrizione
npx prisma init Inizializza Prisma nel progetto
npx prisma generate Rigenera il Prisma Client
npx prisma migrate dev Crea e applica una migrazione
npx prisma db push Sincronizza lo schema senza migrazioni
npx prisma studio Apre la GUI web per esplorare i dati
npx prisma format Formatta il file schema.prisma
npx prisma validate Valida il file schema.prisma