@@ -1234,11 +1234,11 @@ class RequestHandler extends APIHandlerBase {
1234
1234
return r . toString ( ) ;
1235
1235
}
1236
1236
1237
- private makePrismaIdFilter ( idFields : FieldInfo [ ] , resourceId : string ) {
1237
+ private makePrismaIdFilter ( idFields : FieldInfo [ ] , resourceId : string , nested : boolean = true ) {
1238
1238
const decodedId = decodeURIComponent ( resourceId ) ;
1239
1239
if ( idFields . length === 1 ) {
1240
1240
return { [ idFields [ 0 ] . name ] : this . coerce ( idFields [ 0 ] . type , decodedId ) } ;
1241
- } else {
1241
+ } else if ( nested ) {
1242
1242
return {
1243
1243
// TODO: support `@@id` with custom name
1244
1244
[ idFields . map ( ( idf ) => idf . name ) . join ( prismaIdDivider ) ] : idFields . reduce (
@@ -1249,6 +1249,14 @@ class RequestHandler extends APIHandlerBase {
1249
1249
{ }
1250
1250
) ,
1251
1251
} ;
1252
+ } else {
1253
+ return idFields . reduce (
1254
+ ( acc , curr , idx ) => ( {
1255
+ ...acc ,
1256
+ [ curr . name ] : this . coerce ( curr . type , decodedId . split ( this . idDivider ) [ idx ] ) ,
1257
+ } ) ,
1258
+ { }
1259
+ ) ;
1252
1260
}
1253
1261
}
1254
1262
@@ -1608,11 +1616,11 @@ class RequestHandler extends APIHandlerBase {
1608
1616
const values = value . split ( ',' ) . filter ( ( i ) => i ) ;
1609
1617
const filterValue =
1610
1618
values . length > 1
1611
- ? { OR : values . map ( ( v ) => this . makePrismaIdFilter ( info . idFields , v ) ) }
1612
- : this . makePrismaIdFilter ( info . idFields , value ) ;
1619
+ ? { OR : values . map ( ( v ) => this . makePrismaIdFilter ( info . idFields , v , false ) ) }
1620
+ : this . makePrismaIdFilter ( info . idFields , value , false ) ;
1613
1621
return { some : filterValue } ;
1614
1622
} else {
1615
- return { is : this . makePrismaIdFilter ( info . idFields , value ) } ;
1623
+ return { is : this . makePrismaIdFilter ( info . idFields , value , false ) } ;
1616
1624
}
1617
1625
} else {
1618
1626
const coerced = this . coerce ( fieldInfo . type , value ) ;
0 commit comments