@@ -378,6 +378,66 @@ describe('Polymorphism Test', () => {
378
378
) . resolves . toHaveLength ( 1 ) ;
379
379
} ) ;
380
380
381
+ it ( 'read with counting relation defined in base' , async ( ) => {
382
+ const { enhance } = await loadSchema (
383
+ `
384
+
385
+ model A {
386
+ id Int @id @default(autoincrement())
387
+ type String
388
+ bs B[]
389
+ cs C[]
390
+ @@delegate(type)
391
+ }
392
+
393
+ model A1 extends A {
394
+ a1 Int
395
+ type1 String
396
+ @@delegate(type1)
397
+ }
398
+
399
+ model A2 extends A1 {
400
+ a2 Int
401
+ }
402
+
403
+ model B {
404
+ id Int @id @default(autoincrement())
405
+ a A @relation(fields: [aId], references: [id])
406
+ aId Int
407
+ b Int
408
+ }
409
+
410
+ model C {
411
+ id Int @id @default(autoincrement())
412
+ a A @relation(fields: [aId], references: [id])
413
+ aId Int
414
+ c Int
415
+ }
416
+ ` ,
417
+ { enhancements : [ 'delegate' ] }
418
+ ) ;
419
+ const db = enhance ( ) ;
420
+
421
+ const a2 = await db . a2 . create ( {
422
+ data : { a1 : 1 , a2 : 2 , bs : { create : [ { b : 1 } , { b : 2 } ] } , cs : { create : [ { c : 1 } ] } } ,
423
+ include : { _count : { select : { bs : true } } } ,
424
+ } ) ;
425
+ expect ( a2 ) . toMatchObject ( { a1 : 1 , a2 : 2 , _count : { bs : 2 } } ) ;
426
+
427
+ await expect (
428
+ db . a2 . findFirst ( { select : { a1 : true , _count : { select : { bs : true } } } } )
429
+ ) . resolves . toStrictEqual ( {
430
+ a1 : 1 ,
431
+ _count : { bs : 2 } ,
432
+ } ) ;
433
+
434
+ await expect ( db . a . findFirst ( { select : { _count : { select : { bs : true , cs : true } } } } ) ) . resolves . toMatchObject (
435
+ {
436
+ _count : { bs : 2 , cs : 1 } ,
437
+ }
438
+ ) ;
439
+ } ) ;
440
+
381
441
it ( 'order by base fields' , async ( ) => {
382
442
const { db, user } = await setup ( ) ;
383
443
0 commit comments