diff --git a/src/timezone/controllers/index.ts b/src/timezone/controllers/index.ts new file mode 100644 index 0000000..46ae392 --- /dev/null +++ b/src/timezone/controllers/index.ts @@ -0,0 +1 @@ +export * from './timezone.controller'; diff --git a/src/timezone/controllers/timezone.controller.ts b/src/timezone/controllers/timezone.controller.ts new file mode 100644 index 0000000..fc4dd8a --- /dev/null +++ b/src/timezone/controllers/timezone.controller.ts @@ -0,0 +1,33 @@ +import { + Controller, + Get, + HttpException, + HttpStatus, + UseGuards, +} from '@nestjs/common'; +import { TimeZoneService } from '../services/timezone.service'; +import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; +import { JwtAuthGuard } from '../../../libs/common/src/guards/jwt.auth.guard'; + +@ApiTags('TimeZone Module') +@Controller({ + version: '1', + path: 'timezone', +}) +export class TimeZoneController { + constructor(private readonly timeZoneService: TimeZoneService) {} + + @ApiBearerAuth() + @UseGuards(JwtAuthGuard) + @Get() + async getAllTimeZones() { + try { + return await this.timeZoneService.getAllTimeZones(); + } catch (error) { + throw new HttpException( + error.message || 'Internal server error', + error.status || HttpStatus.INTERNAL_SERVER_ERROR, + ); + } + } +} diff --git a/src/timezone/services/index.ts b/src/timezone/services/index.ts new file mode 100644 index 0000000..54c7225 --- /dev/null +++ b/src/timezone/services/index.ts @@ -0,0 +1 @@ +export * from './timezone.service'; diff --git a/src/timezone/services/timezone.service.ts b/src/timezone/services/timezone.service.ts new file mode 100644 index 0000000..29887b0 --- /dev/null +++ b/src/timezone/services/timezone.service.ts @@ -0,0 +1,25 @@ +import { TimeZoneRepository } from '@app/common/modules/timezone/repositories'; +import { + BadRequestException, + HttpException, + HttpStatus, + Injectable, +} from '@nestjs/common'; + +@Injectable() +export class TimeZoneService { + constructor(private readonly timeZoneRepository: TimeZoneRepository) {} + async getAllTimeZones() { + try { + const timeZones = await this.timeZoneRepository.find(); + + return timeZones; + } catch (err) { + if (err instanceof BadRequestException) { + throw err; // Re-throw BadRequestException + } else { + throw new HttpException('TimeZones found', HttpStatus.NOT_FOUND); + } + } + } +} diff --git a/src/timezone/timezone.module.ts b/src/timezone/timezone.module.ts new file mode 100644 index 0000000..668ef8f --- /dev/null +++ b/src/timezone/timezone.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { TimeZoneService } from './services/timezone.service'; +import { TimeZoneController } from './controllers/timezone.controller'; +import { ConfigModule } from '@nestjs/config'; +import { TimeZoneRepository } from '@app/common/modules/timezone/repositories'; + +@Module({ + imports: [ConfigModule], + controllers: [TimeZoneController], + providers: [TimeZoneService, TimeZoneRepository], + exports: [TimeZoneService], +}) +export class TimeZoneModule {}