@@ -580,6 +580,11 @@ export class Project extends BaseEntity {
580
580
}
581
581
}
582
582
583
+ @Field ( _type => [ CauseProject ] , { nullable : true } )
584
+ async loadCauseProjects ( ) : Promise < CauseProject [ ] | [ ] > {
585
+ return [ ] ;
586
+ }
587
+
583
588
@BeforeUpdate ( )
584
589
async updateProjectDescriptionSummary ( ) {
585
590
await Project . update (
@@ -817,6 +822,46 @@ export class Cause extends Project {
817
822
@Column ( { default : 'cause' } )
818
823
projectType : string = 'cause' ;
819
824
825
+ @Field ( _type => [ CauseProject ] , { nullable : true } )
826
+ async loadCauseProjects ( ) : Promise < CauseProject [ ] | [ ] > {
827
+ if ( this . projectType . toLowerCase ( ) === 'project' ) {
828
+ return [ ] ;
829
+ }
830
+
831
+ const causeProjects = await CauseProject . createQueryBuilder ( 'causeProject' )
832
+ . leftJoinAndSelect ( 'causeProject.project' , 'project' )
833
+ . leftJoinAndSelect ( 'project.status' , 'status' )
834
+ . leftJoinAndSelect ( 'project.addresses' , 'addresses' )
835
+ . leftJoinAndSelect (
836
+ 'project.socialProfiles' ,
837
+ 'socialProfiles' ,
838
+ 'socialProfiles.projectId = project.id' ,
839
+ )
840
+ . leftJoinAndSelect (
841
+ 'project.socialMedia' ,
842
+ 'socialMedia' ,
843
+ 'socialMedia.projectId = project.id' ,
844
+ )
845
+ . leftJoinAndSelect ( 'project.anchorContracts' , 'anchor_contract_address' )
846
+ . leftJoinAndSelect ( 'project.projectPower' , 'projectPower' )
847
+ . leftJoinAndSelect ( 'project.projectInstantPower' , 'projectInstantPower' )
848
+ . leftJoinAndSelect ( 'project.projectFuturePower' , 'projectFuturePower' )
849
+ . leftJoinAndSelect ( 'project.projectUpdates' , 'projectUpdates' )
850
+ . leftJoinAndSelect (
851
+ 'project.categories' ,
852
+ 'categories' ,
853
+ 'categories.isActive = :isActive' ,
854
+ { isActive : true } ,
855
+ )
856
+ . leftJoinAndSelect ( 'categories.mainCategory' , 'mainCategory' )
857
+ . leftJoinAndSelect ( 'project.organization' , 'organization' )
858
+ . leftJoinAndSelect ( 'project.qfRounds' , 'qfRounds' )
859
+ . leftJoin ( 'project.adminUser' , 'user' )
860
+ . where ( 'causeProject.causeId = :causeId' , { causeId : this . id } )
861
+ . getMany ( ) ;
862
+ return causeProjects ;
863
+ }
864
+
820
865
// Virtual field to get projects directly
821
866
@Field ( _type => [ Project ] , { nullable : true } )
822
867
async projects ( ) : Promise < Project [ ] | [ ] > {
0 commit comments