@@ -28,12 +28,12 @@ class PrismaType(BaseModel):
28
28
subtypes : List ['PrismaType' ] = []
29
29
30
30
@classmethod
31
- def from_subtypes (cls , subtypes : List ['PrismaType' ], ** kwargs : Any ) -> Union ['PrismaUnion' , 'PrismaAlias' ]:
32
- """Return either a `PrismaUnion` or a `PrismaAlias` depending on the number of subtypes """
33
- if len (subtypes ) > 1 :
34
- return PrismaUnion (subtypes = subtypes , ** kwargs )
31
+ def from_variants (cls , variants : List ['PrismaType' ], ** kwargs : Any ) -> Union ['PrismaUnion' , 'PrismaAlias' ]:
32
+ """Return either a `PrismaUnion` or a `PrismaAlias` depending on the number of variants """
33
+ if len (variants ) > 1 :
34
+ return PrismaUnion (variants = variants , ** kwargs )
35
35
36
- return PrismaAlias (subtypes = subtypes , ** kwargs )
36
+ return PrismaAlias (subtypes = variants , ** kwargs )
37
37
38
38
39
39
class PrismaDict (PrismaType ):
@@ -44,7 +44,18 @@ class PrismaDict(PrismaType):
44
44
45
45
class PrismaUnion (PrismaType ):
46
46
kind : Kind = Kind .union
47
- subtypes : List [PrismaType ]
47
+ variants : List [PrismaType ]
48
+
49
+ @root_validator (pre = True )
50
+ @classmethod
51
+ def add_subtypes (cls , values : Dict [str , Any ]) -> Dict [str , Any ]:
52
+ # add all variants as subtypes so that we don't have to special
53
+ # case rendering subtypes for unions
54
+ if 'variants' in values :
55
+ subtypes = values .get ('subtypes' , [])
56
+ subtypes .extend (values ['variants' ])
57
+ values ['subtypes' ] = subtypes
58
+ return values
48
59
49
60
50
61
class PrismaEnum (PrismaType ):
@@ -94,7 +105,7 @@ class Config:
94
105
def where_unique (self ) -> PrismaType :
95
106
info = self .info
96
107
model = info .name
97
- subtypes : List [PrismaType ] = [
108
+ variants : List [PrismaType ] = [
98
109
PrismaDict (
99
110
total = True ,
100
111
name = f'_{ model } WhereUnique_{ field .name } _Input' ,
@@ -115,7 +126,7 @@ def where_unique(self) -> PrismaType:
115
126
else :
116
127
name = f'_{ model } Compound{ key .name } Key'
117
128
118
- subtypes .append (
129
+ variants .append (
119
130
PrismaDict (
120
131
name = name ,
121
132
total = True ,
@@ -132,12 +143,12 @@ def where_unique(self) -> PrismaType:
132
143
)
133
144
)
134
145
135
- return PrismaType .from_subtypes ( subtypes , name = f'{ model } WhereUniqueInput' )
146
+ return PrismaType .from_variants ( variants , name = f'{ model } WhereUniqueInput' )
136
147
137
148
@cached_property
138
149
def order_by (self ) -> PrismaType :
139
150
model = self .info .name
140
- subtypes : List [PrismaType ] = [
151
+ variants : List [PrismaType ] = [
141
152
PrismaDict (
142
153
name = f'_{ model } _{ field .name } _OrderByInput' ,
143
154
total = True ,
@@ -147,7 +158,7 @@ def order_by(self) -> PrismaType:
147
158
)
148
159
for field in self .info .scalar_fields
149
160
]
150
- return PrismaType .from_subtypes ( subtypes , name = f'{ model } OrderByInput' )
161
+ return PrismaType .from_variants ( variants , name = f'{ model } OrderByInput' )
151
162
152
163
153
164
class ClientTypes (BaseModel ):
0 commit comments