fixing logbook page responsiveness (#116)
* fixing logbook page responsiveness * fixing logbook page responsiveness
This commit was merged in pull request #116.
This commit is contained in:
@@ -20,6 +20,7 @@ import { LogInterceptor } from './log.interceptor';
|
||||
import { FileService } from '../file/file.service';
|
||||
import { DeleteResult, InsertResult, UpdateResult } from 'typeorm';
|
||||
import { Reflector } from '@nestjs/core';
|
||||
import { Logs } from './logs.interface';
|
||||
|
||||
const reflector = new Reflector();
|
||||
|
||||
@@ -31,9 +32,9 @@ export class LogController {
|
||||
private readonly logService: LogService
|
||||
) {}
|
||||
|
||||
@Get()
|
||||
@Get()
|
||||
@Public()
|
||||
async findLogsWithCount(@Query('skip') skip?, @Query('take') take?: number,): Promise<{ entities: LogEntity[], total: number, hasNextPage: boolean }> {
|
||||
async findLogsWithCount(@Query('skip') skip?, @Query('take') take?: number,): Promise<Logs> {
|
||||
try {
|
||||
return await this.logService.findLogsWithCount(skip, take)
|
||||
} catch (error) {
|
||||
@@ -43,13 +44,11 @@ export class LogController {
|
||||
}
|
||||
}
|
||||
|
||||
@Get('tracks')
|
||||
@Get('flights')
|
||||
@Public()
|
||||
async findLogsWithTracks(@Query('skip') skip?, @Query('take') take?: number,): Promise<{ entities: LogEntity[], total: number, hasNextPage: boolean }> {
|
||||
async findLogsWithTracks(@Query('skip') skip?, @Query('take') take?: number,): Promise<Logs> {
|
||||
try {
|
||||
const result = await this.logService.findLogsWithTracks(skip, take)
|
||||
console.log(result);
|
||||
return result
|
||||
return await this.logService.findLogsWithTracks(skip, take)
|
||||
} catch (error) {
|
||||
const customError = error as CustomError;
|
||||
|
||||
|
||||
@@ -15,23 +15,21 @@ export class LogInterceptor implements NestInterceptor {
|
||||
]);
|
||||
|
||||
return handler.handle().pipe(
|
||||
map((data: { entities: LogEntity[], total: number, hasNextPage: boolean }) => {
|
||||
map((data: any) => {
|
||||
const req = context.switchToHttp().getRequest();
|
||||
const limitData = (entities: LogEntity[]) => {
|
||||
return entities.map((log: LogEntity) => {
|
||||
return {
|
||||
id: log.id,
|
||||
pilot: {
|
||||
name: log.pilot.name
|
||||
},
|
||||
date: log.date,
|
||||
aircraftMakeModel: log.aircraftMakeModel,
|
||||
routeFrom: log.routeFrom,
|
||||
routeTo: log.routeTo,
|
||||
durationOfFlight: log.durationOfFlight,
|
||||
tracks: log.tracks,
|
||||
};
|
||||
});
|
||||
const limitData = (log: LogEntity) => {
|
||||
return {
|
||||
id: log.id,
|
||||
pilot: {
|
||||
name: log.pilot.name
|
||||
},
|
||||
date: log.date,
|
||||
aircraftMakeModel: log.aircraftMakeModel,
|
||||
routeFrom: log.routeFrom,
|
||||
routeTo: log.routeTo,
|
||||
durationOfFlight: log.durationOfFlight,
|
||||
tracks: log.tracks,
|
||||
};
|
||||
}
|
||||
|
||||
if (req.headers.authorization) {
|
||||
@@ -41,25 +39,39 @@ export class LogInterceptor implements NestInterceptor {
|
||||
const rolesKeyName = Object.keys(jwtPayload).find((key) => key.includes('roles'));
|
||||
|
||||
if (jwtPayload[rolesKeyName].includes('Flying.Read')) {
|
||||
const logs = limitData(data.entities);
|
||||
if (data.entities) {
|
||||
const logs = data.entities.map((entity) => limitData(data.entities));
|
||||
|
||||
return {
|
||||
entities: logs,
|
||||
total: data.total,
|
||||
hasNextPage: data.hasNextPage
|
||||
};
|
||||
return {
|
||||
entities: logs,
|
||||
total: data.total,
|
||||
hasNextPage: data.hasNextPage
|
||||
};
|
||||
} else {
|
||||
const log = limitData(data);
|
||||
|
||||
return log;
|
||||
}
|
||||
|
||||
} else {
|
||||
return data;
|
||||
}
|
||||
} else if (!req.headers.authorization && isPublic) {
|
||||
const publicData = limitData(data.entities)
|
||||
const logs = publicData.slice(0, 5)
|
||||
if (data.entities) {
|
||||
const publicData = data.entities.map((entity) => limitData(entity))
|
||||
const logs = publicData.slice(0, 5)
|
||||
|
||||
return {
|
||||
entities: logs,
|
||||
total: data.total,
|
||||
hasNextPage: data.hasNextPage
|
||||
};
|
||||
return {
|
||||
entities: publicData,
|
||||
total: data.total,
|
||||
hasNextPage: false
|
||||
};
|
||||
} else {
|
||||
const publicData = limitData(data);
|
||||
|
||||
return publicData
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
@@ -7,6 +7,7 @@ import { PilotService } from '../pilot/pilot.service';
|
||||
import { PilotEntity } from '../pilot/pilot.entity';
|
||||
import { CustomError } from '../error/customError';
|
||||
import { FileService } from '../file/file.service';
|
||||
import { Logs } from './logs.interface';
|
||||
|
||||
@Injectable()
|
||||
export class LogService {
|
||||
@@ -17,15 +18,13 @@ export class LogService {
|
||||
) {}
|
||||
|
||||
async find(id: string): Promise<LogEntity> {
|
||||
const logEntity: LogEntity = await this.logRepository.findOne({
|
||||
return await this.logRepository.findOne({
|
||||
where: { id: id },
|
||||
relations: ['pilot', 'tracks']
|
||||
});
|
||||
|
||||
return logEntity;
|
||||
}
|
||||
|
||||
async findLogsWithCount(skip?: number, take?: number): Promise<{entities: LogEntity[], total: number, hasNextPage: boolean}> {
|
||||
async findLogsWithCount(skip?: number, take?: number): Promise<Logs> {
|
||||
const [entities, total] = await this.logRepository.findAndCount({
|
||||
take,
|
||||
skip,
|
||||
@@ -39,14 +38,14 @@ export class LogService {
|
||||
}
|
||||
}
|
||||
|
||||
async findLogsWithTracks(skip?: number, take?: number): Promise<{entities: LogEntity[], total: number, hasNextPage: boolean}> {
|
||||
async findLogsWithTracks(skip?: number, take?: number): Promise<Logs> {
|
||||
const [entities, total] = await this.logRepository
|
||||
.createQueryBuilder('logs')
|
||||
.innerJoinAndSelect('logs.tracks', 'track')
|
||||
.innerJoinAndSelect('logs.pilot', 'pilot')
|
||||
.orderBy('date')
|
||||
.getManyAndCount();
|
||||
|
||||
|
||||
return {
|
||||
entities,
|
||||
total,
|
||||
|
||||
7
api/src/log/logs.interface.ts
Normal file
7
api/src/log/logs.interface.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { LogEntity } from "src/log/log.entity";
|
||||
|
||||
export interface Logs {
|
||||
entities: LogEntity[],
|
||||
total: number,
|
||||
hasNextPage: boolean
|
||||
}
|
||||
Reference in New Issue
Block a user