sql - Kuinka jakaa Prisma-malli erilliseen tiedostoon?
Opettelen Prisma ORM:ää videoharjoitusten ja virallisten dokumenttien avulla. Ne selittävät ja kirjoittavat kaiken mallikoodin yhteen tiedostoon nimeltä schema.prisma. Se on ok, mutta kun sovellus kasvaa, siitä tulee sekavaa. Joten, kuinka minun pitäisi erottaa mallimääritelmäni erillisiin tiedostoihin?
Vastaus #1
Tällä hetkellä Prisma ei tue tiedostojen segmentointia. Voin kuitenkin suositella kolmea ratkaisua.
Vaihtoehto 1: Prismix
Prismix hyödyntää malleja ja enum-arvoja luodakseen suhteita tiedostojen välillä Prisma-skeemallesi Prismix-konfiguraatiotiedoston kautta.
{
"mixers": [
{
"input": [
"base.prisma",
"./modules/auth/auth.prisma",
"./modules/posts/posts.prisma",
],
"output": "prisma/schema.prisma"
}
]
}
Tämän sijoittaminen prismix.config.json-tiedostoon, joka määrittelee, kuinka haluat yhdistää Prisma-segmenttisi.
Vaihtoehto 2: Schemix
Schemix käyttää Typescript-konfiguraatioita käsittelemään skeeman segmentointia.
Esimerkiksi:
// _schema.ts
import { createSchema } from "schemix";
export const PrismaSchema = createSchema({
datasource: {
provider: "postgresql",
url: {
env: "DATABASE_URL"
},
},
generator: {
provider: "prisma-client-js",
},
});
export const UserModel = PrismaSchema.createModel("User");
import "./models/User.model";
PrismaSchema.export("./", "schema");
User.modelin sisällä
// models/User.model.ts
import { UserModel, PostModel, PostTypeEnum } from "../_schema";
UserModel
.string("id", { id: true, default: { uuid: true } })
.int("registrantNumber", { default: { autoincrement: true } })
.boolean("isBanned", { default: false })
.relation("posts", PostModel, { list: true })
.raw('@@map("service_user")');
Tämä luo sitten prisma/schema.prisma-tiedostosi, joka sisältää koko skeemasi. Käytin esimerkkinä vain yhtä tietokantaa (otettu dokumentaatiosta), mutta sinun pitäisi ymmärtää pointti.
Vaihtoehto 3: Kissa -> Luo
Jaa skeemasi osatiedostonimiin ja suorita:
cat *.part.prisma > schema.prisma
yarn prisma generate
Suurin osa näistä, ellei kaikki, on mainittu täällä nykyisessä avoimessa asiassa liittyen tuen saamiseen Prisma-skeem tiedoston segmentoinnille https://github.com/prisma/prisma/issues/2377
Vastaus #2
Aloittaen Prisma 5.15, tämä voidaan tehdä ilman ulkoisia työkaluja, katso seuraava blogikirjoitus.
Esimerkkiprojekti
Lyhyesti sanottuna, sinun tarvitsee tehdä vain:
Varmista, että schema.prisma-tiedostossasi tämä ominaisuus on otettu käyttöön seuraavasti:
generator client { provider = "prisma-client-js" previewFeatures = ["prismaSchemaFolder"] }Luo hakemisto nimeltä schema prisma-hakemistosi alle
Siirrä schema.prisma-tiedostosi siihen kansioon. Nyt sinun pitäisi pystyä luomaan lisää .prisma-tiedostoja sinne ja määrittelemään mallejaasi. Kaikki yhdistyy automaattisesti, mitään ei tarvitse tuoda erikseen.
