Skip to content

fernandochata/prisma-ORM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

prisma-ORM

Prisma es una toolkit de base de datos de código abierto. Reemplaza los ORM tradicionales y facilita el acceso a la base de datos con un generador de consultas o query builder automáticamente generado y type-safe que se adapta a nuestro esquema de base de datos. Es decir que con un mismo schema se puede migrar entre distintas BBDD.

Documentación https://www.prisma.io/docs/

  • Se necesita una variable de entorno DATABASE_URL, para poder conectarse correctamente a la BBDD
npm install

Comandos de uso general

https://www.prisma.io/docs/reference/api-reference/command-reference

npx prisma init --datasource-provider postgresql

// crea el archivo ~/prisma/schema.prisma donde se encuentra la lógia de nuestro modelo
// crea el archivo con las variables de entorno a usar ~/.env
// la opcion datasource-provider le indica con qué tipo de datos trabajará
// sqlite, postgresql, mysql, sqlserver, mongodb o cockroachdb

npx prisma format

// valida y da formato al archivo esquema (~/prisma/schema.prisma)

npx prisma migrate dev --name init

// migra la información del esquema a la BBDD
// crea migrations/**********/migration.sql que es el script de creacion de la bbdd

npx prisma db pull

// si la base de datos ya existe, copia ese modelo a nuestro esquema local

npx prisma generate

// usando prisma/client genera nuestro cliente para realizar las consultas a la BBDD

npm run dev

Ejemplo de script y diferentes opciones que podemos ocupar

https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#model-queries

prisma.user.findMany({
	where: {
		name: {equals: "Fernando"}
		name: {in: ["Fernando", "Patricia"]},

		age: {lte: 20} //lowerThanEquals,
		age: {gte: 20} //greaterThanEquals,

		email: { contains: "@gmail.com"},
		email: { endsWith: "@gmail.com"},
		email: { startsWith: "fer"},

		AND: [{name: {equals: "Fernando"}}, {age: {lt: 30}}]
	},

	orderBy: {
		age: "desc"
	},

	skip: 3,
	take: 2,

	distinct: ["age"]
})

// tablas relacionadas
prisma.post.findMany({
	where: {
		author: {
			is: { age: 27 }
		}
	}
})