not-found page, #85, client logging

This commit is contained in:
2024-08-13 19:06:32 +02:00
parent 1f8febc479
commit a8bb163acf
15 changed files with 233 additions and 185 deletions

View File

@@ -13,6 +13,9 @@ import { FileService } from './file/file.service.js';
import { GeoModule } from './geo/geo.module.js';
import { ImageModule } from './image/image.module.js';
import { ListingsModule } from './listings/listings.module.js';
import { LogController } from './log/log.controller.js';
import { LogModule } from './log/log.module.js';
import { MailModule } from './mail/mail.module.js';
import { RequestDurationMiddleware } from './request-duration/request-duration.middleware.js';
import { SelectOptionsModule } from './select-options/select-options.module.js';
@@ -75,8 +78,9 @@ loadEnvFiles();
ImageModule,
PassportModule,
AiModule,
LogModule,
],
controllers: [AppController],
controllers: [AppController, LogController],
providers: [AppService, FileService],
})
export class AppModule {

View File

@@ -0,0 +1,19 @@
import { Body, Controller, Inject, Post, Request, UseGuards } from '@nestjs/common';
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
import { Logger } from 'winston';
import { OptionalJwtAuthGuard } from '../jwt-auth/optional-jwt-auth.guard.js';
import { LogMessage } from '../models/main.model.js';
@Controller('log')
export class LogController {
constructor(@Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger) {}
@UseGuards(OptionalJwtAuthGuard)
@Post()
log(@Request() req, @Body() message: LogMessage) {
if (message.severity === 'info') {
this.logger.info(message.text);
} else {
this.logger.error(message.text);
}
}
}

View File

@@ -0,0 +1,7 @@
import { Module } from '@nestjs/common';
import { LogController } from './log.controller.js';
@Module({
controllers: [LogController],
})
export class LogModule {}

View File

@@ -247,6 +247,14 @@ export interface CountyResult {
state: string;
state_code: string;
}
export interface LogMessage {
severity: 'error' | 'info';
text: string;
}
export interface ModalResult {
accepted: boolean;
criteria?: BusinessListingCriteria | CommercialPropertyListingCriteria | UserListingCriteria;
}
export function isEmpty(value: any): boolean {
// Check for undefined or null
if (value === undefined || value === null) {