From 2b5aea57a01b0aeda7791e0b1edc516216e6c6a2 Mon Sep 17 00:00:00 2001 From: Tine Jozelj Date: Tue, 31 Jul 2018 22:51:19 +0200 Subject: [PATCH] feat: add numPost to characters/corporations/alliances --- src/modules/alliance/alliance.controller.ts | 6 +++++- src/modules/alliance/alliance.dto.ts | 5 ++++- src/modules/alliance/alliance.module.ts | 2 ++ .../authentication.controller.ts | 2 +- src/modules/character/character.controller.ts | 5 ++++- src/modules/character/character.dto.ts | 5 ++++- src/modules/character/character.module.ts | 2 ++ .../corporation/corporation.controller.ts | 5 ++++- src/modules/corporation/corporation.dto.ts | 5 ++++- src/modules/corporation/corporation.module.ts | 2 ++ src/modules/post/post.module.ts | 13 +++++++------ src/modules/post/post.repository.ts | 18 ++++++++++++++++++ src/modules/post/post.service.ts | 18 ++++++++++++++++++ 13 files changed, 75 insertions(+), 13 deletions(-) diff --git a/src/modules/alliance/alliance.controller.ts b/src/modules/alliance/alliance.controller.ts index 4494ed2b..ddc4d061 100644 --- a/src/modules/alliance/alliance.controller.ts +++ b/src/modules/alliance/alliance.controller.ts @@ -3,6 +3,7 @@ import { AllianceService } from './alliance.service'; import { DAlliance } from './alliance.dto'; import { ApiResponse, ApiUseTags } from '@nestjs/swagger'; import { FollowService } from '../follow/follow.service'; +import { PostService } from '../post/post.service'; @ApiUseTags('alliances') @Controller('alliances') @@ -11,6 +12,7 @@ export class AllianceController { constructor( private allianceService: AllianceService, private followService: FollowService, + private postService: PostService, ) { } @@ -25,7 +27,9 @@ export class AllianceController { ): Promise { const alliance = await this.allianceService.get(allianceId); const followers = await this.followService.getAllianceFollowers(alliance); - return new DAlliance(alliance, followers); + const numPosts = await this.postService.getNumOfPostsByAlliance(alliance); + + return new DAlliance(alliance, followers, numPosts); } } diff --git a/src/modules/alliance/alliance.dto.ts b/src/modules/alliance/alliance.dto.ts index f6c6953e..749c6bdd 100644 --- a/src/modules/alliance/alliance.dto.ts +++ b/src/modules/alliance/alliance.dto.ts @@ -59,6 +59,8 @@ export class DAlliance { icon: DAllianceIcon; @ApiModelProperty() followers: DFollow[]; + @ApiModelProperty() + numPosts: number; /* LIVE Data */ @ApiModelProperty() @@ -84,7 +86,7 @@ export class DAlliance { @ApiModelProperty() corpCount: number; - constructor(alliance: Alliance, followers: Follow[]) { + constructor(alliance: Alliance, followers: Follow[], numPosts: number) { this.id = alliance.id; this.name = alliance.name; this.handle = alliance.handle; @@ -93,6 +95,7 @@ export class DAlliance { this.executorCorporation = new DCorporationShortWithoutAlliance(alliance.executorCorporation); this.icon = new DAllianceIcon(alliance.icon); this.followers = followers.map(follow => new DFollow(follow)); + this.numPosts = numPosts; this.hasSupers = alliance.hasSupers; this.iskDestroyed = alliance.iskDestroyed; diff --git a/src/modules/alliance/alliance.module.ts b/src/modules/alliance/alliance.module.ts index a19a25c1..ed1d5e49 100644 --- a/src/modules/alliance/alliance.module.ts +++ b/src/modules/alliance/alliance.module.ts @@ -7,6 +7,7 @@ import { CorporationModule } from '../corporation/corporation.module'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AllianceRepository } from './alliance.repository'; import { FollowModule } from '../follow/follow.module'; +import { PostModule } from '../post/post.module'; @Module({ imports: [ @@ -16,6 +17,7 @@ import { FollowModule } from '../follow/follow.module'; ESIModule, forwardRef(() => CorporationModule), forwardRef(() => FollowModule), + forwardRef(() => PostModule), ], controllers: [ AllianceController, diff --git a/src/modules/authentication/authentication.controller.ts b/src/modules/authentication/authentication.controller.ts index 5d670af9..bb3c7bc8 100644 --- a/src/modules/authentication/authentication.controller.ts +++ b/src/modules/authentication/authentication.controller.ts @@ -46,7 +46,7 @@ export class AuthenticationController { const following = await this.followService.getCharacterFollowing(character); const followers = await this.followService.getCharacterFollowers(character); - return new DCharacter(character, followers, following); + return new DCharacter(character, followers, following, 0); } @ApiResponse({ diff --git a/src/modules/character/character.controller.ts b/src/modules/character/character.controller.ts index 98b3ccb2..550e6c52 100644 --- a/src/modules/character/character.controller.ts +++ b/src/modules/character/character.controller.ts @@ -3,6 +3,7 @@ import { CharacterService } from './character.service'; import { DCharacter } from './character.dto'; import { ApiResponse, ApiUseTags } from '@nestjs/swagger'; import { FollowService } from '../follow/follow.service'; +import { PostService } from '../post/post.service'; @ApiUseTags('characters') @Controller('characters') @@ -11,6 +12,7 @@ export class CharactersController { constructor( private characterService: CharacterService, private followService: FollowService, + private postService: PostService, ) { } @@ -26,8 +28,9 @@ export class CharactersController { const character = await this.characterService.get(characterId); const followers = await this.followService.getCharacterFollowers(character); const following = await this.followService.getCharacterFollowing(character); + const numPosts = await this.postService.getNumOfPostsByCharacter(character); - return new DCharacter(character, followers, following); + return new DCharacter(character, followers, following, numPosts); } } diff --git a/src/modules/character/character.dto.ts b/src/modules/character/character.dto.ts index e276700a..a16db250 100644 --- a/src/modules/character/character.dto.ts +++ b/src/modules/character/character.dto.ts @@ -90,6 +90,8 @@ export class DCharacter { followers: DFollow[]; @ApiModelProperty() following: DFollow[]; + @ApiModelProperty() + numPosts: number; /* LIVE Data*/ @ApiModelProperty() @@ -109,7 +111,7 @@ export class DCharacter { @ApiModelProperty() soloLosses: number; - constructor(character: Character, followers: Follow[], following: Follow[]) { + constructor(character: Character, followers: Follow[], following: Follow[], numPosts: number) { this.id = character.id; this.handle = character.handle; this.name = character.name; @@ -123,6 +125,7 @@ export class DCharacter { this.corporation = new DCorporationShort(character.corporation); this.followers = followers.map(follow => new DFollow(follow)) this.following = following.map(follow => new DFollow(follow)) + this.numPosts = numPosts; this.iskDestroyed = character.iskDestroyed; this.iskLost = character.iskLost; diff --git a/src/modules/character/character.module.ts b/src/modules/character/character.module.ts index 30e6c829..e721b846 100644 --- a/src/modules/character/character.module.ts +++ b/src/modules/character/character.module.ts @@ -7,6 +7,7 @@ import { CorporationModule } from '../corporation/corporation.module'; import { TypeOrmModule } from '@nestjs/typeorm'; import { CharacterRepository } from './character.repository'; import { FollowModule } from '../follow/follow.module'; +import { PostModule } from '../post/post.module'; @Module({ imports: [ @@ -16,6 +17,7 @@ import { FollowModule } from '../follow/follow.module'; ESIModule, forwardRef(() => CorporationModule), forwardRef(() => FollowModule), + forwardRef(() => PostModule), ], controllers: [ CharactersController, diff --git a/src/modules/corporation/corporation.controller.ts b/src/modules/corporation/corporation.controller.ts index 9cffd579..ed613ef8 100644 --- a/src/modules/corporation/corporation.controller.ts +++ b/src/modules/corporation/corporation.controller.ts @@ -3,6 +3,7 @@ import { CorporationService } from './corporation.service'; import { DCorporation } from './corporation.dto'; import { ApiResponse, ApiUseTags } from '@nestjs/swagger'; import { FollowService } from '../follow/follow.service'; +import { PostService } from '../post/post.service'; @ApiUseTags('corporations') @Controller('corporations') @@ -11,6 +12,7 @@ export class CorporationController { constructor( private corporationService: CorporationService, private followService: FollowService, + private postService: PostService, ) { } @@ -25,8 +27,9 @@ export class CorporationController { ): Promise { const corporation = await this.corporationService.get(corporationId); const followers = await this.followService.getCorporationFollowers(corporation); + const numPosts = await this.postService.getNumOfPostsByCorporation(corporation); - return new DCorporation(corporation, followers); + return new DCorporation(corporation, followers, numPosts); } } diff --git a/src/modules/corporation/corporation.dto.ts b/src/modules/corporation/corporation.dto.ts index 9d610936..f3d18605 100644 --- a/src/modules/corporation/corporation.dto.ts +++ b/src/modules/corporation/corporation.dto.ts @@ -89,6 +89,8 @@ export class DCorporation { icon: DCorporationIcon; @ApiModelProperty() followers: DFollow[]; + @ApiModelProperty() + numPosts: number; /* LIVE Data*/ @ApiModelProperty() @@ -108,7 +110,7 @@ export class DCorporation { @ApiModelProperty() soloLosses: number; - constructor(corporation: Corporation, followers: Follow[]) { + constructor(corporation: Corporation, followers: Follow[], numPosts: number) { this.id = corporation.id; this.handle = corporation.handle; this.name = corporation.name; @@ -117,6 +119,7 @@ export class DCorporation { this.alliance = corporation.alliance ? new DAllianceShort(corporation.alliance) : null; this.icon = new DCorporationIcon(corporation.icon); this.followers = followers.map(follow => new DFollow(follow)); + this.numPosts = numPosts; this.iskDestroyed = corporation.iskDestroyed; this.iskLost = corporation.iskLost; diff --git a/src/modules/corporation/corporation.module.ts b/src/modules/corporation/corporation.module.ts index f7860ad9..a88e8a7e 100644 --- a/src/modules/corporation/corporation.module.ts +++ b/src/modules/corporation/corporation.module.ts @@ -8,6 +8,7 @@ import { AllianceModule } from '../alliance/alliance.module'; import { TypeOrmModule } from '@nestjs/typeorm'; import { CorporationRepository } from './corporation.repository'; import { FollowModule } from '../follow/follow.module'; +import { PostModule } from '../post/post.module'; @Module({ imports: [ @@ -18,6 +19,7 @@ import { FollowModule } from '../follow/follow.module'; forwardRef(() => CharacterModule), forwardRef(() => AllianceModule), forwardRef(() => FollowModule), + forwardRef(() => PostModule), ], controllers: [ CorporationController, diff --git a/src/modules/post/post.module.ts b/src/modules/post/post.module.ts index 38cddac2..0844774e 100644 --- a/src/modules/post/post.module.ts +++ b/src/modules/post/post.module.ts @@ -1,4 +1,4 @@ -import { Module, OnModuleInit } from '@nestjs/common'; +import { Module, OnModuleInit, forwardRef } from '@nestjs/common'; import { PostController } from './post.controller'; import { PostService } from './post.service'; import { AuthenticationModule } from '../authentication/authentication.module'; @@ -25,14 +25,15 @@ import { WebsocketModule } from '../websocket/websocket.module'; // GooglePubSubModule.forFeature('test-topic', 'test-subscription'), - AuthenticationModule, - CharacterModule, - CorporationModule, - AllianceModule, - HashtagModule, UniverseLocationModule, + HashtagModule, NotificationModule, WebsocketModule, + + forwardRef(() => AuthenticationModule), + forwardRef(() => CharacterModule), + forwardRef(() => CorporationModule), + forwardRef(() => AllianceModule), ], controllers: [ PostController, diff --git a/src/modules/post/post.repository.ts b/src/modules/post/post.repository.ts index 34df068e..72aa9173 100644 --- a/src/modules/post/post.repository.ts +++ b/src/modules/post/post.repository.ts @@ -117,6 +117,24 @@ export class PostRepository extends Repository { }; } + public getNumOfPostsByCharacter( + character: Character, + ): Promise { + return this.count({ where: { character } }) + } + + public getNumOfPostsByCorporation( + corporation: Corporation, + ): Promise { + return this.count({ where: { corporation } }) + } + + public getNumOfPostsByAlliance( + alliance: Alliance, + ): Promise { + return this.count({ where: { alliance } }) + } + /** * Wrapper for querying posts * @param {number} limit diff --git a/src/modules/post/post.service.ts b/src/modules/post/post.service.ts index d1aa4470..0a7a8f1e 100644 --- a/src/modules/post/post.service.ts +++ b/src/modules/post/post.service.ts @@ -230,6 +230,24 @@ export class PostService { return this.postRepository.getParticipants(post); } + public async getNumOfPostsByCharacter( + character: Character, + ): Promise { + return this.postRepository.getNumOfPostsByCharacter(character); + } + + public async getNumOfPostsByCorporation( + corporation: Corporation, + ): Promise { + return this.postRepository.getNumOfPostsByCorporation(corporation); + } + + public async getNumOfPostsByAlliance( + alliance: Alliance, + ): Promise { + return this.postRepository.getNumOfPostsByAlliance(alliance); + } + /** * Create post * @param {Post} post