Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

Modelando la base datos y schema

6/23
Recursos

Aportes 6

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Schema.prisma

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}

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

model Avocado {
  id        Int       @id @default(autoincrement())
  createdAt DateTime  @default(now())
  updatedAt DateTime? @updatedAt
  deletedAt DateTime?
  name       String
  sku        String      @unique
  price      Float
  image      String
  attributes Attributes?
}

model Attributes {
  id          Int     @id @default(autoincrement())
  description String?
  shape       String?
  hardiness   String?
  taste       String?
  avocado     Avocado @relation(fields: [avocadoId], references: [id])
  avocadoId   Int
}


Para que los archivos .prisma tengan highlinting y tambi茅n intellisense, les recomiendo instalar la extensi贸n de vscode llamada Prisma.

Modelado Prisma

.
馃洜 Repositorio Link

馃毀 Commit Link
.
Para este caso, me ha interesado dividir nuestro schema.prisma, con el cual es posible mediante la herramienta Prismix.
.
Retomando mi dise帽o:

.
Definiendo un par de modelos:

// product.prisma
model Product {
    id       Int     @id @default(autoincrement())
    name     String
    price    Decimal
    quantity Int
    image    String

    categoryId Int
    category   Category @relation(fields: [categoryId], references: [id])

    @@map("product")
}

model Category {
    id       Int       @id
    products Product[]
}
// category.prisma
model Category {
    id   Int    @id @default(autoincrement())
    name String

    @@map("category")
}

Configuraci贸n Prismix

Despu茅s de instalar la dependencia como desarrollo Link, anexo la configuraci贸n de prismix:

{
    "mixers": [
        {
            "input": ["./src/db/models/*.prisma"],
            "output": "./prisma/schema.prisma"
        }
    ]
}

Por 煤ltimo, anexo en package.json prisma y prismix:

{
    "scripts": {
        "prismix": "npx prismix && npx prisma format"
    },
   //...
    "prisma": {
        "schema": "./prisma/schema.prisma",
        "seed": "ts-node ./prisma/seed.js"
    }
}

Si gustan trabajar directamente con Postgresql de una vez pueden poner en la url de db el string de conexi贸n:
Y todo debe funcionar exactamente igual ^^

datasource db {
  provider = "postgresql"
  url      = "postgres://<user>:<password>@<server>:<port>/<dbname>"
}

Me arrojaba un error el modelos de atributos, lo solucione agregando el decorador @unique al campo avocadoId, por si a alguien m谩s le sale ese mismo error.

model Attributes {
  id          Int     @id @default(autoincrement())
  description String?
  shape       String?
  hardiness   String?
  taste       String?
  avocado     Avocado @relation(fields: [avocadoId], references: [id])
  avocadoId   Int @unique
}

Que locura Prisma! 馃檭 馃憣