Skip to content

on v2.6.0 some fields on concrete model inherited from polymorphic base model disappear  #1734

Closed
@tmax22

Description

@tmax22

for example, for the given input zmodel schema:

generator client {
    provider = "prisma-client-js"
    binaryTargets = ["native", "rhel-openssl-3.0.x"]
}

datasource db {
    provider = "postgresql"
    url      = env("DATABASE_URL")
}

abstract model Base {
    id        String   @id @default(uuid())
    createdAt DateTime @default(now())
    updatedAt DateTime @updatedAt()
}

model ProductStage extends Base {
    stage      String

    stageTable String @default("")
    @@delegate(stageTable)
}


model ClientRequirementsStage extends ProductStage {
    someField String
}

you would get:

//////////////////////////////////////////////////////////////////////////////////////////////
// DO NOT MODIFY THIS FILE                                                                  //
// This file is automatically generated by ZenStack CLI and should not be manually updated. //
//////////////////////////////////////////////////////////////////////////////////////////////

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider      = "prisma-client-js"
  binaryTargets = ["native", "rhel-openssl-3.0.x"]
}

/// @@delegate(stageTable)
model ProductStage {
  id                                   String                   @id() @default(uuid())
  createdAt                            DateTime                 @default(now())
  updatedAt                            DateTime                 @updatedAt()
  stage                                String
  stageTable                           String                   @default("")
  delegate_aux_clientRequirementsStage ClientRequirementsStage?
}

model ClientRequirementsStage {
  id                        String       @id() @default(uuid())
  someField                 String
  delegate_aux_productStage ProductStage @relation(fields: [id], references: [id], onDelete: Cascade, onUpdate: Cascade)
}

note that ClientRequirementsStage is missing createdAt and updatedAt. the expected output would be:

//////////////////////////////////////////////////////////////////////////////////////////////
// DO NOT MODIFY THIS FILE                                                                  //
// This file is automatically generated by ZenStack CLI and should not be manually updated. //
//////////////////////////////////////////////////////////////////////////////////////////////

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider      = "prisma-client-js"
  binaryTargets = ["native", "rhel-openssl-3.0.x"]
}

/// @@delegate(stageTable)
model ProductStage {
  id                                   String                   @id() @default(uuid())
  createdAt                            DateTime                 @default(now())
  updatedAt                            DateTime                 @updatedAt()
  stage                                String
  stageTable                           String                   @default("")
  delegate_aux_clientRequirementsStage ClientRequirementsStage?
}

model ClientRequirementsStage {
  id                        String       @id() @default(uuid())
  createdAt                            DateTime                 @default(now())
  updatedAt                            DateTime                 @updatedAt()
  someField                 String
  delegate_aux_productStage ProductStage @relation(fields: [id], references: [id], onDelete: Cascade, onUpdate: Cascade)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions