Skip to content
This repository has been archived by the owner on Nov 7, 2020. It is now read-only.

Commit

Permalink
refactor(logger, pagination, utils, folder structure): initial change…
Browse files Browse the repository at this point in the history
…s to make it more like lynx

for #91
  • Loading branch information
mentos1386 committed Mar 26, 2018
1 parent ea769c2 commit 74b0ee0
Show file tree
Hide file tree
Showing 108 changed files with 853 additions and 455 deletions.
31 changes: 17 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,24 @@
"instrument": true
},
"dependencies": {
"@nestjs/common": "^4.1.0",
"@nestjs/core": "^4.1.0",
"@nestjs/microservices": "^4.1.0",
"@nestjs/testing": "^4.1.0",
"@nestjs/websockets": "^4.1.0",
"@nestjs/common": "^4.6.3",
"@nestjs/core": "^4.6.3",
"@nestjs/microservices": "^4.6.1",
"@nestjs/swagger": "^1.1.4",
"@nestjs/testing": "^4.6.1",
"@nestjs/typeorm": "^2.0.0",
"@nestjs/websockets": "^4.5.8",
"@types/bluebird": "^3.5.14",
"@types/hashids": "^1.0.30",
"@types/ioredis": "0.0.25",
"@types/moment": "^2.13.0",
"@types/node": "^8.0.33",
"@types/winston": "^2.3.6",
"@types/ws": "^3.2.0",
"axios": "^0.16.2",
"bluebird": "^3.5.1",
"body-parser": "^1.18.2",
"class-sanitizer": "^0.0.5",
"class-transformer": "^0.1.8",
"class-validator": "^0.7.1",
"cors": "^2.8.3",
Expand All @@ -64,18 +73,13 @@
"typeorm": "0.1.0-alpha.50",
"typescript": "^2.5.3",
"winston": "^2.4.0",
"ws": "^3.1.0"
"ws": "^3.1.0",
"zone.js": "^0.8.18"
},
"devDependencies": {
"@types/bluebird": "^3.5.14",
"@types/chai": "^4.0.1",
"@types/faker": "^4.1.0",
"@types/ioredis": "0.0.25",
"@types/mocha": "^2.2.41",
"@types/moment": "^2.13.0",
"@types/node": "^8.0.33",
"@types/winston": "^2.3.6",
"@types/ws": "^3.2.0",
"chai": "^4.0.2",
"coveralls": "^2.13.3",
"cz-conventional-changelog": "^2.1.0",
Expand All @@ -85,8 +89,7 @@
"supertest": "^3.0.0",
"ts-node": "^3.1.0",
"tslint": "^5.4.3",
"tslint-config-airbnb": "^5.2.0",
"zone.js": "^0.8.18"
"tslint-config-airbnb": "^5.2.0"
},
"config": {
"commitizen": {
Expand Down
21 changes: 14 additions & 7 deletions src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import * as express from 'express';
import * as cors from 'cors';
import { NestFactory } from '@nestjs/core';
import { ApplicationModule } from './modules/app.module';
import { ValidatorPipe } from './pipes/validator.pipe';
import Log from './utils/Log';
import { ValidatorPipe } from './modules/core/validation/validator.pipe';
// Used for TypeORM
import 'reflect-metadata';
// Import config
Expand All @@ -13,20 +12,28 @@ import { config } from 'dotenv';
import 'zone.js';
import 'zone.js/dist/zone-node.js';
import 'zone.js/dist/long-stack-trace-zone.js';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

async function bootstrap() {
config();
Log.init();

const instance = express();
instance.use(bodyParser.json());
instance.use(cors());

const app = await NestFactory.create(ApplicationModule, instance);
app.useGlobalPipes(new ValidatorPipe());
await app.listen(parseInt(process.env.PORT, 10));
const nestApp = await NestFactory.create(ApplicationModule, instance);
nestApp.useGlobalPipes(new ValidatorPipe());

Log.info(`Application is listening on port ${process.env.PORT}.`);
// Swagger
const options = new DocumentBuilder()
.setTitle('EVE-Book API')
.setDescription('Automatically generated API Description')
.setVersion('development')
.build();
const document = SwaggerModule.createDocument(nestApp, options);
SwaggerModule.setup('/docs', nestApp, document);

await nestApp.listen(parseInt(process.env.PORT, 10));
}

bootstrap()
Expand Down
File renamed without changes.
14 changes: 14 additions & 0 deletions src/interceptors/formatter.interceptor.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { ExecutionContext, Interceptor, NestInterceptor } from '@nestjs/common';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';

@Interceptor()
export class FormatterInterceptor implements NestInterceptor {
intercept(
dataOrRequest: Request | any,
context: ExecutionContext,
stream$: Observable<any>,
): Observable<any> {
return stream$.map(data => ({ data }));
}
}
1 change: 0 additions & 1 deletion src/middlewares/exists.middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ export abstract class ExistsMiddleware<T> implements NestMiddleware {

async resolve(): Promise<ExpressMiddleware> {
return async (req, res, next) => {
Log.debug('Using Exists Middleware');

const entity = await this.service.exists(this.getId(req));
if (!entity) throw new HttpException('Entity not found', 404);
Expand Down
4 changes: 2 additions & 2 deletions src/modules/alliance/alliance.dto.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { DCorporationShortWithoutAlliance } from '../corporation/corporation.dto';
import { Alliance } from './alliance.entity';
import { DPagination } from '../../dto/paggination.dto';
import { IAllianceName } from '../common/external/esi/esi.interface';
import { DPagination } from '../core/pagination/paggination.dto';
import { IAllianceName } from '../core/external/esi/esi.interface';
import { IAllianceIcon } from './alliance.interface';

export class DAllianceIcon {
Expand Down
4 changes: 2 additions & 2 deletions src/modules/alliance/alliance.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import {
PrimaryColumn,
UpdateDateColumn,
} from 'typeorm';
import { IAllianceStatistics } from '../common/external/zkillboard/zkillboard.interface';
import { IGetAlliance } from '../common/external/esi/esi.interface';
import { IAllianceStatistics } from '../core/external/zkillboard/zkillboard.interface';
import { IGetAlliance } from '../core/external/esi/esi.interface';
import { Corporation } from '../corporation/corporation.entity';
import { Post } from '../post/post.entity';
import { IAllianceIcon } from './alliance.interface';
Expand Down
9 changes: 5 additions & 4 deletions src/modules/alliance/alliance.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@ import { forwardRef, Module, RequestMethod } from '@nestjs/common';
import { AllianceService } from './alliance.service';
import { AllianceController } from './alliance.controller';
import { allianceProviders } from './alliance.providers';
import { ESIModule } from '../common/external/esi/esi.module';
import { ZKillboardModule } from '../common/external/zkillboard/zkillboard.module';
import { ESIModule } from '../core/external/esi/esi.module';
import { ZKillboardModule } from '../core/external/zkillboard/zkillboard.module';
import { CorporationModule } from '../corporation/corporation.module';
import { AllianceExistsMiddleware } from './alliance.exists.middleware';
import { MiddlewaresConsumer } from '@nestjs/common/interfaces/middlewares';
import { DatabaseModule } from '../common/database/database.module';
import { DatabaseModule } from '../core/database/database.module';
import { UtilsModule } from '../core/utils/utils.module';

@Module({
modules: [
imports: [
DatabaseModule,
ZKillboardModule,
ESIModule,
Expand Down
2 changes: 1 addition & 1 deletion src/modules/alliance/alliance.providers.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Connection } from 'typeorm';
import { DB_CONNECTION_TOKEN } from '../common/database/database.constants';
import { DB_CONNECTION_TOKEN } from '../core/database/database.constants';
import { Alliance } from './alliance.entity';
import { ALLIANCE_REPOSITORY_TOKEN } from './alliance.constants';

Expand Down
29 changes: 17 additions & 12 deletions src/modules/alliance/alliance.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,21 @@ import { Alliance } from './alliance.entity';
import { forwardRef, Inject } from '@nestjs/common';
import { ALLIANCE_REPOSITORY_TOKEN } from './alliance.constants';
import { IService } from '../../interfaces/service.interface';
import { ESIService } from '../common/external/esi/esi.service';
import { ZKillboardService } from '../common/external/zkillboard/zkillboard.service';
import { ESIService } from '../core/external/esi/esi.service';
import { ZKillboardService } from '../core/external/zkillboard/zkillboard.service';
import { CorporationService } from '../corporation/corporation.service';
import { ESIEntetyNotFoundException } from '../common/external/esi/esi.exceptions';
import Log from '../../utils/Log';
import { ESIEntetyNotFoundException } from '../core/external/esi/esi.exceptions';
import { Corporation } from '../corporation/corporation.entity';
import { Utils } from '../../utils/utils.static';
import { LoggerService } from '../core/logger/logger.service';
import { UtilsService } from '../core/utils/utils.service';

export class AllianceService implements IService<Alliance> {

constructor(
@Inject(ALLIANCE_REPOSITORY_TOKEN) private allianceRepository: Repository<Alliance>,
private utilsService: UtilsService,
private loggerService: LoggerService,
@Inject(ALLIANCE_REPOSITORY_TOKEN)
private allianceRepository: Repository<Alliance>,
@Inject(forwardRef(() => CorporationService))
private corporationService: CorporationService,
@Inject(forwardRef(() => ZKillboardService)) // FIXME: This forwardRef probably isn't needed
Expand Down Expand Up @@ -45,14 +48,14 @@ export class AllianceService implements IService<Alliance> {
* @returns {Promise<Alliance>}
*/
public async get(id: number): Promise<Alliance> {
Log.debug('get alliance', id);
this.loggerService.debug('get alliance', id);
// Find alliance in database
const alliance = await this.findAllianceById(id);

Log.debug('get alliance populating', id);
this.loggerService.debug('get alliance populating', id);
const zkillAlliance = await this.zkillboardService.allianceStatistics(id);
alliance.populateZKillboard(zkillAlliance);
Log.debug('get alliance done populating', id);
this.loggerService.debug('get alliance done populating', id);

return alliance;
}
Expand Down Expand Up @@ -130,17 +133,19 @@ export class AllianceService implements IService<Alliance> {
alliance.populateESI(esiAlliance);

// Create handle
alliance.handle = Utils.createHandle(alliance.id, alliance.name);
alliance.handle = this.utilsService.createHandle(alliance.id, alliance.name);

// Save without corporation
await this.allianceRepository.save(alliance);

if (esiAlliance.executor_corporation_id && esiAlliance.executor_corporation_id !== 1) {
Log.debug('Alliance get executor corporation', esiAlliance.executor_corporation_id);
this.loggerService.debug(
'Alliance get executor corporation', esiAlliance.executor_corporation_id);
// Load corporation
alliance.executorCorporation =
await this.corporationService.get(esiAlliance.executor_corporation_id);
Log.debug('Alliance done get executor corporation', esiAlliance.executor_corporation_id);
this.loggerService.debug(
'Alliance done get executor corporation', esiAlliance.executor_corporation_id);

// Update corporation id
await this.allianceRepository.updateById(alliance.id, {
Expand Down
12 changes: 9 additions & 3 deletions src/modules/app.module.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
import { Module } from '@nestjs/common';
import { SearchModule } from './search/search.module';
import { CharacterModule } from './character/character.module';
import { AuthenticationModule } from './authentication/authentication.module';
import { AuthenticationModule } from './core/authentication/authentication.module';
import { PostModule } from './post/post.module';
import { MiddlewaresConsumer } from '@nestjs/common/interfaces/middlewares';
import { RequestContextMiddleware } from './common/requestContext/requestContext.middleware';
import { RequestContextMiddleware } from './core/requestContext/requestContext.middleware';
import { AllianceModule } from './alliance/alliance.module';
import { CorporationModule } from './corporation/corporation.module';
import { LoggerModule } from './core/logger/logger.module';
import { UtilsModule } from './core/utils/utils.module';

@Module({
modules: [
imports: [
// Global
LoggerModule,
UtilsModule,

SearchModule,
AllianceModule,
CharacterModule,
Expand Down
4 changes: 2 additions & 2 deletions src/modules/character/character.dto.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { DCorporationShort } from '../corporation/corporation.dto';
import { Character } from './character.entity';
import { ICharacterPortrait } from './character.interface';
import { DPagination } from '../../dto/paggination.dto';
import { ICharacterName } from '../common/external/esi/esi.interface';
import { DPagination } from '../core/pagination/paggination.dto';
import { ICharacterName } from '../core/external/esi/esi.interface';

export class DCharacterPortrait {
px64x64: string;
Expand Down
4 changes: 2 additions & 2 deletions src/modules/character/character.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import {
PrimaryColumn,
UpdateDateColumn,
} from 'typeorm';
import { ICharacterStatistics } from '../common/external/zkillboard/zkillboard.interface';
import { IGetCharacter } from '../common/external/esi/esi.interface';
import { ICharacterStatistics } from '../core/external/zkillboard/zkillboard.interface';
import { IGetCharacter } from '../core/external/esi/esi.interface';
import { Post } from '../post/post.entity';
import { Comment } from '../comment/comment.entity';
import { ICharacterPortrait } from './character.interface';
Expand Down
8 changes: 4 additions & 4 deletions src/modules/character/character.module.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { forwardRef, Module, RequestMethod } from '@nestjs/common';
import { CharactersController } from './character.controller';
import { CharacterService } from './character.service';
import { DatabaseModule } from '../common/database/database.module';
import { ZKillboardModule } from '../common/external/zkillboard/zkillboard.module';
import { ESIModule } from '../common/external/esi/esi.module';
import { DatabaseModule } from '../core/database/database.module';
import { ZKillboardModule } from '../core/external/zkillboard/zkillboard.module';
import { ESIModule } from '../core/external/esi/esi.module';
import { characterProviders } from './character.providers';
import { MiddlewaresConsumer } from '@nestjs/common/interfaces/middlewares';
import { CharacterExistsMiddleware } from './character.exists.middleware';
import { CorporationModule } from '../corporation/corporation.module';

@Module({
modules: [
imports: [
DatabaseModule,
ZKillboardModule,
ESIModule,
Expand Down
2 changes: 1 addition & 1 deletion src/modules/character/character.providers.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Connection } from 'typeorm';
import { Character } from './character.entity';
import { DB_CONNECTION_TOKEN } from '../common/database/database.constants';
import { DB_CONNECTION_TOKEN } from '../core/database/database.constants';
import { CHARACTER_REPOSITORY_TOKEN } from './character.constants';

export const characterProviders = [
Expand Down
26 changes: 14 additions & 12 deletions src/modules/character/character.service.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
import { Component, forwardRef, Inject } from '@nestjs/common';
import { Repository } from 'typeorm';
import { Character } from './character.entity';
import { ZKillboardService } from '../common/external/zkillboard/zkillboard.service';
import { ESIService } from '../common/external/esi/esi.service';
import { ZKillboardService } from '../core/external/zkillboard/zkillboard.service';
import { ESIService } from '../core/external/esi/esi.service';
import { CHARACTER_REPOSITORY_TOKEN } from './character.constants';
import { IService } from '../../interfaces/service.interface';
import { ESIEntetyNotFoundException } from '../common/external/esi/esi.exceptions';
import { ESIEntetyNotFoundException } from '../core/external/esi/esi.exceptions';
import { CorporationService } from '../corporation/corporation.service';
import { IGetCharacterRoles } from '../common/external/esi/esi.interface';
import Log from '../../utils/Log';
import { Utils } from '../../utils/utils.static';
import { IGetCharacterRoles } from '../core/external/esi/esi.interface';
import { LoggerService } from '../core/logger/logger.service';
import { UtilsService } from '../core/utils/utils.service';

@Component()
export class CharacterService implements IService<Character> {

constructor(
private esiService: ESIService,
private loggerService: LoggerService,
private utilsService: UtilsService,
@Inject(CHARACTER_REPOSITORY_TOKEN) private characterRepository: Repository<Character>,
private zkillboardService: ZKillboardService,
private esiService: ESIService,
@Inject(forwardRef(() => CorporationService))
private corporationService: CorporationService,
) {
Expand All @@ -29,14 +31,14 @@ export class CharacterService implements IService<Character> {
* @return {Promise<Character>}
*/
public async get(id: number): Promise<Character> {
Log.debug('get character', id);
this.loggerService.debug('get character', id);
// Find character in database
const character = await this.findCharacterById(id);

Log.debug('get character populating', id);
this.loggerService.debug('get character populating', id);
const zkillChar = await this.zkillboardService.characterStatistics(id);
character.populateZKillboard(zkillChar);
Log.debug('get character done populating', id);
this.loggerService.debug('get character done populating', id);

return character;
}
Expand Down Expand Up @@ -122,13 +124,13 @@ export class CharacterService implements IService<Character> {
character.populateESI(esiCharacter);

// Create handle
character.handle = Utils.createHandle(character.id, character.name);
character.handle = this.utilsService.createHandle(character.id, character.name);

// Save without corporation
await this.characterRepository.save(character);

if (esiCharacter.corporation_id && esiCharacter.corporation_id !== 1) {
Log.debug('Character get corporation', esiCharacter.corporation_id);
this.loggerService.debug('Character get corporation', esiCharacter.corporation_id);
// Load corporation
character.corporation = await this.corporationService.get(esiCharacter.corporation_id);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Body, Controller, Get, Headers, HttpStatus, Post, Query, Response } from '@nestjs/common';
import { AuthenticationService } from './authentication.service';
import { HttpException } from '@nestjs/core';
import { DCharacterShort } from '../character/character.dto';
import { DCharacterShort } from '../../character/character.dto';

@Controller('authentication')
export class AuthenticationController {
Expand Down

0 comments on commit 74b0ee0

Please sign in to comment.