Prisma ORM
Prisma es un ORM moderno que facilita mucho el trabajo con bases de datos.
Instalación
bash
npm install prisma @prisma/clientnpx prisma initConfiguración de Conexión
env
# .envDATABASE_URL="postgresql://postgres:postgres@localhost:5432/ecommerce"Definiendo el Schema
prisma
// prisma/schema.prismagenerator client { provider = "prisma-client-js"} datasource db { provider = "postgresql" url = env("DATABASE_URL")} model User { id String @id @default(uuid()) email String @unique name String password String role Role @default(USER) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt} enum Role { USER ADMIN} model Product { id String @id @default(uuid()) name String slug String @unique description String? price Decimal @db.Decimal(10, 2) stock Int @default(0) category Category @relation(fields: [categoryId], references: [id]) categoryId String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt} model Category { id String @id @default(uuid()) name String @unique slug String @unique products Product[]}Ejecutando Migraciones
bash
# Crear migraciónnpx prisma migrate dev --name init # Generar clientenpx prisma generate # Ver base de datos (GUI)npx prisma studioSetup del Prisma Client
typescript
// src/config/database.tsimport { PrismaClient } from '@prisma/client'; export const prisma = new PrismaClient({ log: ['query', 'error', 'warn'],});Consultas Básicas
typescript
// Crearconst user = await prisma.user.create({ data: { email: 'juan@email.com', name: 'Juan', password: 'hash' }}); // Buscar muchosconst users = await prisma.user.findMany(); // Buscar únicoconst user = await prisma.user.findUnique({ where: { email: 'juan@email.com' }}); // Actualizarconst updated = await prisma.user.update({ where: { id: '123' }, data: { name: 'Juan García' }}); // Eliminarawait prisma.user.delete({ where: { id: '123' } });Consultas con Relaciones
typescript
// Incluir relacionesconst product = await prisma.product.findUnique({ where: { id: '123' }, include: { category: true }}); // Seleccionar campos específicosconst products = await prisma.product.findMany({ select: { id: true, name: true, price: true }});Resumen
- ✅ Prisma configurado con PostgreSQL
- ✅ Schema definido con modelos
- ✅ Migraciones creadas
- ✅ Consultas CRUD básicas
Próxima clase: CRUD Completo! 🚀