From b38685bdf15e9f4094af8ae76aea0264c393e1a0 Mon Sep 17 00:00:00 2001 From: Tine Jozelj Date: Mon, 30 Jul 2018 22:51:27 +0200 Subject: [PATCH] feat: add followers/following to character/corporation/allinace --- src/modules/alliance/alliance.controller.ts | 9 ++++- src/modules/alliance/alliance.dto.ts | 7 +++- src/modules/alliance/alliance.entity.ts | 2 +- src/modules/alliance/alliance.module.ts | 2 + .../authentication.controller.ts | 14 +++++-- .../authentication/authentication.module.ts | 6 ++- src/modules/character/character.controller.ts | 11 ++++- src/modules/character/character.dto.ts | 10 ++++- src/modules/character/character.module.ts | 2 + src/modules/character/character.service.ts | 22 ---------- .../corporation/corporation.controller.ts | 10 ++++- src/modules/corporation/corporation.dto.ts | 7 +++- src/modules/corporation/corporation.entity.ts | 2 +- src/modules/corporation/corporation.module.ts | 2 + src/modules/follow/follow.constants.ts | 2 +- src/modules/follow/follow.controller.ts | 28 ++++++------- src/modules/follow/follow.dto.ts | 27 +++++++++++-- src/modules/follow/follow.entity.ts | 8 ++-- src/modules/follow/follow.module.ts | 8 ++-- src/modules/follow/follow.repository.ts | 40 +++++++++++++++++++ src/modules/follow/follow.service.ts | 16 ++++++++ 21 files changed, 169 insertions(+), 66 deletions(-) diff --git a/src/modules/alliance/alliance.controller.ts b/src/modules/alliance/alliance.controller.ts index 0e4bba46..4494ed2b 100644 --- a/src/modules/alliance/alliance.controller.ts +++ b/src/modules/alliance/alliance.controller.ts @@ -2,12 +2,16 @@ import { Controller, Get, HttpStatus, Param, Response } from '@nestjs/common'; import { AllianceService } from './alliance.service'; import { DAlliance } from './alliance.dto'; import { ApiResponse, ApiUseTags } from '@nestjs/swagger'; +import { FollowService } from '../follow/follow.service'; @ApiUseTags('alliances') @Controller('alliances') export class AllianceController { - constructor(private allianceService: AllianceService) { + constructor( + private allianceService: AllianceService, + private followService: FollowService, + ) { } @ApiResponse({ @@ -20,7 +24,8 @@ export class AllianceController { @Param('allianceId') allianceId: number, ): Promise { const alliance = await this.allianceService.get(allianceId); - return new DAlliance(alliance); + const followers = await this.followService.getAllianceFollowers(alliance); + return new DAlliance(alliance, followers); } } diff --git a/src/modules/alliance/alliance.dto.ts b/src/modules/alliance/alliance.dto.ts index 373b27a0..f6c6953e 100644 --- a/src/modules/alliance/alliance.dto.ts +++ b/src/modules/alliance/alliance.dto.ts @@ -3,6 +3,8 @@ import { Alliance } from './alliance.entity'; import { DPagination } from '../core/pagination/paggination.dto'; import { IAllianceIcon } from './alliance.interface'; import { ApiModelProperty } from '@nestjs/swagger'; +import { Follow } from '../follow/follow.entity'; +import { DFollow } from '../follow/follow.dto'; export class DAllianceIcon { @ApiModelProperty() @@ -55,6 +57,8 @@ export class DAlliance { executorCorporation: DCorporationShortWithoutAlliance; @ApiModelProperty() icon: DAllianceIcon; + @ApiModelProperty() + followers: DFollow[]; /* LIVE Data */ @ApiModelProperty() @@ -80,7 +84,7 @@ export class DAlliance { @ApiModelProperty() corpCount: number; - constructor(alliance: Alliance) { + constructor(alliance: Alliance, followers: Follow[]) { this.id = alliance.id; this.name = alliance.name; this.handle = alliance.handle; @@ -88,6 +92,7 @@ export class DAlliance { this.dateFounded = alliance.dateFounded; this.executorCorporation = new DCorporationShortWithoutAlliance(alliance.executorCorporation); this.icon = new DAllianceIcon(alliance.icon); + this.followers = followers.map(follow => new DFollow(follow)); this.hasSupers = alliance.hasSupers; this.iskDestroyed = alliance.iskDestroyed; diff --git a/src/modules/alliance/alliance.entity.ts b/src/modules/alliance/alliance.entity.ts index 592e1020..135a0f69 100644 --- a/src/modules/alliance/alliance.entity.ts +++ b/src/modules/alliance/alliance.entity.ts @@ -50,7 +50,7 @@ export class Alliance { comments: Comment[]; @OneToMany(type => Follow, follow => follow.followingAlliance) - followers: Follow[]; + followers: Promise; @UpdateDateColumn() updatedAt: Date; diff --git a/src/modules/alliance/alliance.module.ts b/src/modules/alliance/alliance.module.ts index 4eb94493..a19a25c1 100644 --- a/src/modules/alliance/alliance.module.ts +++ b/src/modules/alliance/alliance.module.ts @@ -6,6 +6,7 @@ import { ZKillboardModule } from '../core/external/zkillboard/zkillboard.module' import { CorporationModule } from '../corporation/corporation.module'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AllianceRepository } from './alliance.repository'; +import { FollowModule } from '../follow/follow.module'; @Module({ imports: [ @@ -14,6 +15,7 @@ import { AllianceRepository } from './alliance.repository'; ZKillboardModule, ESIModule, forwardRef(() => CorporationModule), + forwardRef(() => FollowModule), ], controllers: [ AllianceController, diff --git a/src/modules/authentication/authentication.controller.ts b/src/modules/authentication/authentication.controller.ts index 7a6aa584..5d670af9 100644 --- a/src/modules/authentication/authentication.controller.ts +++ b/src/modules/authentication/authentication.controller.ts @@ -3,15 +3,19 @@ import { Response, } from '@nestjs/common'; import { AuthenticationService } from './authentication.service'; -import { DCharacterShort } from '../character/character.dto'; +import { DCharacterShort, DCharacter } from '../character/character.dto'; import { ApiBearerAuth, ApiImplicitBody, ApiResponse, ApiUseTags } from '@nestjs/swagger'; import { IAuthenticationResponse } from '../core/external/sso/sso.interface'; +import { FollowService } from '../follow/follow.service'; @ApiUseTags('authentication') @Controller('authentication') export class AuthenticationController { - constructor(private authenticationService: AuthenticationService) { + constructor( + private authenticationService: AuthenticationService, + private followService: FollowService, + ) { } @ApiResponse({ @@ -32,15 +36,17 @@ export class AuthenticationController { @Get('/sso/verify') public async verify( @Headers('authorization') token: string, - ): Promise { + ): Promise { if (!token) throw new HttpException( 'Authorization header is required!', HttpStatus.BAD_REQUEST); const character = await this.authenticationService .verifyAuthentication(token.slice('Bearer '.length)); + const following = await this.followService.getCharacterFollowing(character); + const followers = await this.followService.getCharacterFollowers(character); - return new DCharacterShort(character); + return new DCharacter(character, followers, following); } @ApiResponse({ diff --git a/src/modules/authentication/authentication.module.ts b/src/modules/authentication/authentication.module.ts index 3b092f54..89623e13 100644 --- a/src/modules/authentication/authentication.module.ts +++ b/src/modules/authentication/authentication.module.ts @@ -1,14 +1,16 @@ -import { Module } from '@nestjs/common'; +import { Module, forwardRef } from '@nestjs/common'; import { AuthenticationController } from './authentication.controller'; import { AuthenticationService } from './authentication.service'; import { SSOModule } from '../core/external/sso/sso.module'; import { CharacterModule } from '../character/character.module'; import { AuthenticationGuard } from './authentication.guard'; +import { FollowModule } from '../follow/follow.module'; @Module({ imports: [ SSOModule, - CharacterModule, + forwardRef(() => CharacterModule), + forwardRef(() => FollowModule), ], controllers: [ AuthenticationController, diff --git a/src/modules/character/character.controller.ts b/src/modules/character/character.controller.ts index 8c2ce803..98b3ccb2 100644 --- a/src/modules/character/character.controller.ts +++ b/src/modules/character/character.controller.ts @@ -2,12 +2,16 @@ import { Controller, Get, HttpStatus, Param } from '@nestjs/common'; import { CharacterService } from './character.service'; import { DCharacter } from './character.dto'; import { ApiResponse, ApiUseTags } from '@nestjs/swagger'; +import { FollowService } from '../follow/follow.service'; @ApiUseTags('characters') @Controller('characters') export class CharactersController { - constructor(private characterService: CharacterService) { + constructor( + private characterService: CharacterService, + private followService: FollowService, + ) { } @ApiResponse({ @@ -20,7 +24,10 @@ export class CharactersController { @Param('characterId') characterId: number, ): Promise { const character = await this.characterService.get(characterId); - return new DCharacter(character); + const followers = await this.followService.getCharacterFollowers(character); + const following = await this.followService.getCharacterFollowing(character); + + return new DCharacter(character, followers, following); } } diff --git a/src/modules/character/character.dto.ts b/src/modules/character/character.dto.ts index 304cbf82..e276700a 100644 --- a/src/modules/character/character.dto.ts +++ b/src/modules/character/character.dto.ts @@ -3,6 +3,8 @@ import { Character } from './character.entity'; import { ICharacterPortrait } from './character.interface'; import { DPagination } from '../core/pagination/paggination.dto'; import { ApiModelProperty } from '@nestjs/swagger'; +import { DFollowAction, DFollow } from '../follow/follow.dto'; +import { Follow } from '../follow/follow.entity'; export class DCharacterPortrait { @ApiModelProperty() @@ -84,6 +86,10 @@ export class DCharacter { portrait: DCharacterPortrait; @ApiModelProperty() corporation: DCorporationShort; + @ApiModelProperty() + followers: DFollow[]; + @ApiModelProperty() + following: DFollow[]; /* LIVE Data*/ @ApiModelProperty() @@ -103,7 +109,7 @@ export class DCharacter { @ApiModelProperty() soloLosses: number; - constructor(character: Character) { + constructor(character: Character, followers: Follow[], following: Follow[]) { this.id = character.id; this.handle = character.handle; this.name = character.name; @@ -115,6 +121,8 @@ export class DCharacter { this.securityStatus = character.securityStatus; this.portrait = new DCharacterPortrait(character.portrait); this.corporation = new DCorporationShort(character.corporation); + this.followers = followers.map(follow => new DFollow(follow)) + this.following = following.map(follow => new DFollow(follow)) 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 f92ec152..30e6c829 100644 --- a/src/modules/character/character.module.ts +++ b/src/modules/character/character.module.ts @@ -6,6 +6,7 @@ import { ESIModule } from '../core/external/esi/esi.module'; import { CorporationModule } from '../corporation/corporation.module'; import { TypeOrmModule } from '@nestjs/typeorm'; import { CharacterRepository } from './character.repository'; +import { FollowModule } from '../follow/follow.module'; @Module({ imports: [ @@ -14,6 +15,7 @@ import { CharacterRepository } from './character.repository'; ZKillboardModule, ESIModule, forwardRef(() => CorporationModule), + forwardRef(() => FollowModule), ], controllers: [ CharactersController, diff --git a/src/modules/character/character.service.ts b/src/modules/character/character.service.ts index 38a3883f..888d7626 100644 --- a/src/modules/character/character.service.ts +++ b/src/modules/character/character.service.ts @@ -46,28 +46,6 @@ export class CharacterService implements IService { return character; } - /** - * Get all characters by ids - * @param {number[]} ids - * @returns {Promise} - */ - public async getAllById(ids: number[]): Promise { - const characters = await this.characterRepository.getAllByIds(ids); - - for (const id of ids) { - const character = characters.find(c => c.id === id); - // If we didn't found in database, try to populate it - if (!character) characters.push(await this.findCharacterById(id)); - } - - for (const key in characters) { - const zkillChar = await this.zkillboardService.characterStatistics(characters[key].id); - characters[key].populateZKillboard(zkillChar); - } - - return characters; - } - /** * Update character by id * @param {Character} character diff --git a/src/modules/corporation/corporation.controller.ts b/src/modules/corporation/corporation.controller.ts index 5e9c06e6..9cffd579 100644 --- a/src/modules/corporation/corporation.controller.ts +++ b/src/modules/corporation/corporation.controller.ts @@ -2,12 +2,16 @@ import { Controller, Get, HttpStatus, Param, Response } from '@nestjs/common'; import { CorporationService } from './corporation.service'; import { DCorporation } from './corporation.dto'; import { ApiResponse, ApiUseTags } from '@nestjs/swagger'; +import { FollowService } from '../follow/follow.service'; @ApiUseTags('corporations') @Controller('corporations') export class CorporationController { - constructor(private corporationService: CorporationService) { + constructor( + private corporationService: CorporationService, + private followService: FollowService, + ) { } @ApiResponse({ @@ -20,7 +24,9 @@ export class CorporationController { @Param('corporationId') corporationId: number, ): Promise { const corporation = await this.corporationService.get(corporationId); - return new DCorporation(corporation); + const followers = await this.followService.getCorporationFollowers(corporation); + + return new DCorporation(corporation, followers); } } diff --git a/src/modules/corporation/corporation.dto.ts b/src/modules/corporation/corporation.dto.ts index 9b184af3..9d610936 100644 --- a/src/modules/corporation/corporation.dto.ts +++ b/src/modules/corporation/corporation.dto.ts @@ -3,6 +3,8 @@ import { Corporation } from './corporation.entity'; import { DPagination } from '../core/pagination/paggination.dto'; import { ICorporationIcon } from './corporation.interface'; import { ApiModelProperty } from '@nestjs/swagger'; +import { DFollow } from '../follow/follow.dto'; +import { Follow } from '../follow/follow.entity'; export class DCorporationIcon { @ApiModelProperty() @@ -85,6 +87,8 @@ export class DCorporation { alliance?: DAllianceShort; @ApiModelProperty() icon: DCorporationIcon; + @ApiModelProperty() + followers: DFollow[]; /* LIVE Data*/ @ApiModelProperty() @@ -104,7 +108,7 @@ export class DCorporation { @ApiModelProperty() soloLosses: number; - constructor(corporation: Corporation) { + constructor(corporation: Corporation, followers: Follow[]) { this.id = corporation.id; this.handle = corporation.handle; this.name = corporation.name; @@ -112,6 +116,7 @@ export class DCorporation { this.description = corporation.description; this.alliance = corporation.alliance ? new DAllianceShort(corporation.alliance) : null; this.icon = new DCorporationIcon(corporation.icon); + this.followers = followers.map(follow => new DFollow(follow)); this.iskDestroyed = corporation.iskDestroyed; this.iskLost = corporation.iskLost; diff --git a/src/modules/corporation/corporation.entity.ts b/src/modules/corporation/corporation.entity.ts index 88bab915..fb6c6401 100644 --- a/src/modules/corporation/corporation.entity.ts +++ b/src/modules/corporation/corporation.entity.ts @@ -59,7 +59,7 @@ export class Corporation { executingAlliance: Alliance; @OneToMany(type => Follow, follow => follow.followingCorporation) - followers: Follow[]; + followers: Promise; @Column({ nullable: true }) createdAt?: Date; diff --git a/src/modules/corporation/corporation.module.ts b/src/modules/corporation/corporation.module.ts index 2da73b7e..f7860ad9 100644 --- a/src/modules/corporation/corporation.module.ts +++ b/src/modules/corporation/corporation.module.ts @@ -7,6 +7,7 @@ import { CharacterModule } from '../character/character.module'; import { AllianceModule } from '../alliance/alliance.module'; import { TypeOrmModule } from '@nestjs/typeorm'; import { CorporationRepository } from './corporation.repository'; +import { FollowModule } from '../follow/follow.module'; @Module({ imports: [ @@ -16,6 +17,7 @@ import { CorporationRepository } from './corporation.repository'; ESIModule, forwardRef(() => CharacterModule), forwardRef(() => AllianceModule), + forwardRef(() => FollowModule), ], controllers: [ CorporationController, diff --git a/src/modules/follow/follow.constants.ts b/src/modules/follow/follow.constants.ts index 3c7f54c8..5adc6d68 100644 --- a/src/modules/follow/follow.constants.ts +++ b/src/modules/follow/follow.constants.ts @@ -1,5 +1,5 @@ -export enum FOLLOW_TYPE { +export enum FOLLOW_ACTION_TYPE { FOLLOW = 'FOLLOW', UN_FOLLOW = 'UN_FOLLOW', } diff --git a/src/modules/follow/follow.controller.ts b/src/modules/follow/follow.controller.ts index 50e6935d..fa998774 100644 --- a/src/modules/follow/follow.controller.ts +++ b/src/modules/follow/follow.controller.ts @@ -3,12 +3,12 @@ import { Controller, HttpStatus, Param, UseGuards, Post } from "@nestjs/common"; import { Character } from "../character/character.entity"; import { AuthenticatedCharacter } from "../authentication/authentication.decorators"; import { AuthenticationGuard } from "../authentication/authentication.guard"; -import { DFollow } from "./follow.dto"; +import { DFollowAction } from "./follow.dto"; import { FollowService } from "./follow.service"; import { CharacterService } from "../character/character.service"; import { CorporationService } from "../corporation/corporation.service"; import { AllianceService } from "../alliance/alliance.service"; -import { FOLLOW_TYPE } from "./follow.constants"; +import { FOLLOW_ACTION_TYPE } from "./follow.constants"; @ApiUseTags('follow') @Controller('follow') @@ -24,7 +24,7 @@ export class FollowController { @ApiResponse({ status: HttpStatus.OK, - type: DFollow, + type: DFollowAction, description: 'Follow a character', }) @ApiBearerAuth() @@ -33,22 +33,22 @@ export class FollowController { public async followCharacter( @Param('characterId') characterId: number, @AuthenticatedCharacter() follower: Character, - ): Promise { + ): Promise { const character = await this.characterService.get(characterId); const follow = await this.followService.checkIfFolowingCharacter(follower, character); if (follow) { await this.followService.unfollow(follow); - return new DFollow(FOLLOW_TYPE.UN_FOLLOW); + return new DFollowAction(FOLLOW_ACTION_TYPE.UN_FOLLOW); } const newFollow = await this.followService.followCharacter(follower, character); - return new DFollow(FOLLOW_TYPE.FOLLOW); + return new DFollowAction(FOLLOW_ACTION_TYPE.FOLLOW); } @ApiResponse({ status: HttpStatus.OK, - type: DFollow, + type: DFollowAction, description: 'Follow a corporation', }) @ApiBearerAuth() @@ -57,22 +57,22 @@ export class FollowController { public async followCorporation( @Param('corporationId') corporationId: number, @AuthenticatedCharacter() follower: Character, - ): Promise { + ): Promise { const corporation = await this.corporationService.get(corporationId); const follow = await this.followService.checkIfFolowingCorporation(follower, corporation); if (follow) { await this.followService.unfollow(follow); - return new DFollow(FOLLOW_TYPE.UN_FOLLOW); + return new DFollowAction(FOLLOW_ACTION_TYPE.UN_FOLLOW); } const newFollow = await this.followService.followCorporation(follower, corporation); - return new DFollow(FOLLOW_TYPE.FOLLOW); + return new DFollowAction(FOLLOW_ACTION_TYPE.FOLLOW); } @ApiResponse({ status: HttpStatus.OK, - type: DFollow, + type: DFollowAction, description: 'Follow an Alliance', }) @ApiBearerAuth() @@ -81,17 +81,17 @@ export class FollowController { public async followAlliance( @Param('allianceId') allianceId: number, @AuthenticatedCharacter() follower: Character, - ): Promise { + ): Promise { const alliance = await this.allianceService.get(allianceId); const follow = await this.followService.checkIfFolowingAlliance(follower, alliance); if (follow) { await this.followService.unfollow(follow); - return new DFollow(FOLLOW_TYPE.UN_FOLLOW); + return new DFollowAction(FOLLOW_ACTION_TYPE.UN_FOLLOW); } const newFollow = await this.followService.followAlliance(follower, alliance); - return new DFollow(FOLLOW_TYPE.FOLLOW); + return new DFollowAction(FOLLOW_ACTION_TYPE.FOLLOW); } } diff --git a/src/modules/follow/follow.dto.ts b/src/modules/follow/follow.dto.ts index e17247a4..72207be4 100644 --- a/src/modules/follow/follow.dto.ts +++ b/src/modules/follow/follow.dto.ts @@ -1,9 +1,28 @@ -import { FOLLOW_TYPE } from "./follow.constants"; +import { FOLLOW_ACTION_TYPE } from "./follow.constants"; +import { Follow } from "./follow.entity"; +import { DCharacterShort } from "../character/character.dto"; +import { DCorporationShort } from "../corporation/corporation.dto"; +import { DAllianceShort } from "../alliance/alliance.dto"; -export class DFollow { - type: FOLLOW_TYPE; +export class DFollowAction { + type: FOLLOW_ACTION_TYPE; - constructor(type: FOLLOW_TYPE) { + constructor(type: FOLLOW_ACTION_TYPE) { this.type = type; } } + +export class DFollow { + follower: DCharacterShort; + + followingCharacter: DCharacterShort; + followingCorporation: DCorporationShort; + followingAlliance: DAllianceShort; + + constructor(follow: Follow) { + this.follower = new DCharacterShort(follow.follower); + if (follow.followingCharacter) this.followingCharacter = new DCharacterShort(follow.followingCharacter); + if (follow.followingCorporation) this.followingCorporation = new DCorporationShort(follow.followingCorporation); + if (follow.followingAlliance) this.followingAlliance = new DAllianceShort(follow.followingAlliance); + } +} diff --git a/src/modules/follow/follow.entity.ts b/src/modules/follow/follow.entity.ts index cf24c872..1acd15b8 100644 --- a/src/modules/follow/follow.entity.ts +++ b/src/modules/follow/follow.entity.ts @@ -12,16 +12,16 @@ export class Follow extends AggregateRoot { @PrimaryGeneratedColumn('uuid') id: string; - @ManyToOne(type => Character, character => character.following) + @ManyToOne(type => Character, character => character.following, { eager: true }) follower: Character; - @ManyToOne(type => Character, character => character.followers) + @ManyToOne(type => Character, character => character.followers, { eager: true }) followingCharacter: Character; - @ManyToOne(type => Corporation, corporation => corporation.followers) + @ManyToOne(type => Corporation, corporation => corporation.followers, { eager: true }) followingCorporation: Corporation; - @ManyToOne(type => Alliance, alliance => alliance.followers) + @ManyToOne(type => Alliance, alliance => alliance.followers, { eager: true }) followingAlliance: Alliance; async unFollow(): Promise { diff --git a/src/modules/follow/follow.module.ts b/src/modules/follow/follow.module.ts index 339992cf..c9a9c7c5 100644 --- a/src/modules/follow/follow.module.ts +++ b/src/modules/follow/follow.module.ts @@ -1,4 +1,4 @@ -import { Module, OnModuleInit } from '@nestjs/common'; +import { Module, OnModuleInit, forwardRef } from '@nestjs/common'; import { AuthenticationModule } from '../authentication/authentication.module'; import { CharacterModule } from '../character/character.module'; import { CorporationModule } from '../corporation/corporation.module'; @@ -20,9 +20,9 @@ import { FollowRepository } from './follow.repository'; TypeOrmModule.forFeature([FollowRepository]), AuthenticationModule, - CharacterModule, - CorporationModule, - AllianceModule, + forwardRef(() => CharacterModule), + forwardRef(() => CorporationModule), + forwardRef(() => AllianceModule), NotificationModule, WebsocketModule, ], diff --git a/src/modules/follow/follow.repository.ts b/src/modules/follow/follow.repository.ts index 8036baac..300ee026 100644 --- a/src/modules/follow/follow.repository.ts +++ b/src/modules/follow/follow.repository.ts @@ -43,4 +43,44 @@ export class FollowRepository extends Repository { }); } + getCharacterFollowers( + character: Character, + ): Promise { + return this.find({ + where: { + followingCharacter: character, + } + }) + } + + getCorporationFollowers( + corporation: Corporation, + ): Promise { + return this.find({ + where: { + followingCorporation: corporation, + } + }) + } + + getAllianceFollowers( + alliance: Alliance, + ): Promise { + return this.find({ + where: { + followingAlliance: alliance, + } + }) + } + + getCharacterFollowing( + character: Character, + ): Promise { + return this.find({ + where: { + follower: character, + } + }) + } + } diff --git a/src/modules/follow/follow.service.ts b/src/modules/follow/follow.service.ts index 5f8ef8d1..229c5a70 100644 --- a/src/modules/follow/follow.service.ts +++ b/src/modules/follow/follow.service.ts @@ -85,4 +85,20 @@ export class FollowService { return this.followRepository.getFollowingAlliance(follower, following); } + getCharacterFollowers(character: Character): Promise { + return this.followRepository.getCharacterFollowers(character); + } + + getCorporationFollowers(corporation: Corporation): Promise { + return this.followRepository.getCorporationFollowers(corporation); + } + + getAllianceFollowers(alliance: Alliance): Promise { + return this.followRepository.getAllianceFollowers(alliance); + } + + getCharacterFollowing(character: Character): Promise { + return this.followRepository.getCharacterFollowing(character); + } + }