@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
2
2
import { ID , PublicOf } from '~/common' ;
3
3
import { e , RepoFor } from '~/core/edgedb' ;
4
4
import { Partnership } from './dto' ;
5
+ import type { PartnershipByProjectAndPartnerInput } from './partnership-by-project-and-partner.loader' ;
5
6
import { PartnershipRepository } from './partnership.repository' ;
6
7
7
8
@Injectable ( )
@@ -28,6 +29,26 @@ export class PartnershipEdgeDBRepository
28
29
} )
29
30
implements PublicOf < PartnershipRepository >
30
31
{
32
+ async readManyByProjectAndPartner (
33
+ input : readonly PartnershipByProjectAndPartnerInput [ ] ,
34
+ ) {
35
+ return await this . db . run ( this . readManyByProjectAndPartnerQuery , { input } ) ;
36
+ }
37
+ private readonly readManyByProjectAndPartnerQuery = e . params (
38
+ { input : e . array ( e . tuple ( { project : e . uuid , partner : e . uuid } ) ) } ,
39
+ ( { input } ) =>
40
+ e . for ( e . array_unpack ( input ) , ( { project, partner } ) =>
41
+ e . select ( e . Partnership , ( partnership ) => ( {
42
+ ...this . hydrate ( partnership ) ,
43
+ filter : e . op (
44
+ e . op ( partnership . project , '=' , e . cast ( e . Project , project ) ) ,
45
+ 'and' ,
46
+ e . op ( partnership . partner , '=' , e . cast ( e . Partner , partner ) ) ,
47
+ ) ,
48
+ } ) ) ,
49
+ ) ,
50
+ ) ;
51
+
31
52
async isFirstPartnership ( projectId : ID ) {
32
53
const project = e . cast ( e . Project , e . uuid ( projectId ) ) ;
33
54
const query = e . op ( 'not' , e . op ( 'exists' , project . partnerships ) ) ;
0 commit comments