Fullstack TypeScript toolkit that enhances Prisma ORM with flexible Authorization layer for RBAC/ABAC/PBAC/ReBAC, offering auto-generated type-safe APIs and frontend hooks.
Description and expected behavior
I have a model which uses inheritance. When creating a query with the enhanced client, I can use all the fields from the base model and the derived model in my where clause. However, only the field from the derived model work.
Environment
ZenStack version: 2.0.1
Prisma version: 5.13.0
Database type: Postgresql
Code
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
enum DrinkType {
Drink
Beer
Wine
Soda
Cocktail
}
enum ContainerType {
BeerBottle
WineBottle
PlasticBottle
Can
Carton
}
model Drink {
id Int @id @default(autoincrement())
slug String @unique
manufacturer_id Int
manufacturer Manufacturer @relation(fields: [manufacturer_id], references: [id])
type DrinkType
name String @unique
description String
abv Float
image String?
gluten Boolean
lactose Boolean
organic Boolean
containers Container[]
@@delegate(type)
@@allow('all', true)
}
model Beer extends Drink {
style_id Int
style BeerStyle @relation(fields: [style_id], references: [id])
ibu Float?
@@allow('all', true)
}
model BeerStyle {
id Int @id @default(autoincrement())
name String @unique
color String
beers Beer[]
@@allow('all', true)
}
model Wine extends Drink {
style_id Int
style WineStyle @relation(fields: [style_id], references: [id])
heavy_score Int?
tannine_score Int?
dry_score Int?
fresh_score Int?
notes String?
@@allow('all', true)
}
model WineStyle {
id Int @id @default(autoincrement())
name String @unique
color String
wines Wine[]
@@allow('all', true)
}
model Soda extends Drink {
carbonated Boolean
@@allow('all', true)
}
model Cocktail extends Drink {
mix Boolean
@@allow('all', true)
}
model Container {
barcode String @id
drink_id Int
drink Drink @relation(fields: [drink_id], references: [id])
type ContainerType
volume Int
portions Int?
inventory Int @default(0)
@@allow('all', true)
}
model Manufacturer {
id Int @id @default(autoincrement())
country_id String
country Country @relation(fields: [country_id], references: [code])
name String @unique
description String?
image String?
drinks Drink[]
@@allow('all', true)
}
model Country {
code String @id
name String
manufacturers Manufacturer[]
@@allow('all', true)
}
Description and expected behavior I have a model which uses inheritance. When creating a query with the enhanced client, I can use all the fields from the base model and the derived model in my where clause. However, only the field from the derived model work.
Environment
Code
It is trying to add the
gluten
check to thebeer
table, but this information is stored in the parentdrink
table.