diff --git a/src/region/controllers/index.ts b/src/region/controllers/index.ts new file mode 100644 index 0000000..308cfa8 --- /dev/null +++ b/src/region/controllers/index.ts @@ -0,0 +1 @@ +export * from './region.controller'; diff --git a/src/region/controllers/region.controller.ts b/src/region/controllers/region.controller.ts new file mode 100644 index 0000000..cea276a --- /dev/null +++ b/src/region/controllers/region.controller.ts @@ -0,0 +1,33 @@ +import { + Controller, + Get, + HttpException, + HttpStatus, + UseGuards, +} from '@nestjs/common'; +import { RegionService } from '../services/region.service'; +import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; +import { JwtAuthGuard } from '../../../libs/common/src/guards/jwt.auth.guard'; + +@ApiTags('Region Module') +@Controller({ + version: '1', + path: 'region', +}) +export class RegionController { + constructor(private readonly regionService: RegionService) {} + + @ApiBearerAuth() + @UseGuards(JwtAuthGuard) + @Get() + async getAllRegions() { + try { + return await this.regionService.getAllRegions(); + } catch (error) { + throw new HttpException( + error.message || 'Internal server error', + error.status || HttpStatus.INTERNAL_SERVER_ERROR, + ); + } + } +} diff --git a/src/region/region.module.ts b/src/region/region.module.ts new file mode 100644 index 0000000..c0da5ab --- /dev/null +++ b/src/region/region.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { RegionService } from './services/region.service'; +import { RegionController } from './controllers/region.controller'; +import { ConfigModule } from '@nestjs/config'; +import { RegionRepository } from '@app/common/modules/region/repositories'; + +@Module({ + imports: [ConfigModule], + controllers: [RegionController], + providers: [RegionService, RegionRepository], + exports: [RegionService], +}) +export class RegionModule {} diff --git a/src/region/services/index.ts b/src/region/services/index.ts new file mode 100644 index 0000000..6ca2cea --- /dev/null +++ b/src/region/services/index.ts @@ -0,0 +1 @@ +export * from './region.service'; diff --git a/src/region/services/region.service.ts b/src/region/services/region.service.ts new file mode 100644 index 0000000..580f285 --- /dev/null +++ b/src/region/services/region.service.ts @@ -0,0 +1,25 @@ +import { + BadRequestException, + HttpException, + HttpStatus, + Injectable, +} from '@nestjs/common'; +import { RegionRepository } from '@app/common/modules/region/repositories'; + +@Injectable() +export class RegionService { + constructor(private readonly regionRepository: RegionRepository) {} + async getAllRegions() { + try { + const regions = await this.regionRepository.find(); + + return regions; + } catch (err) { + if (err instanceof BadRequestException) { + throw err; // Re-throw BadRequestException + } else { + throw new HttpException('Regions found', HttpStatus.NOT_FOUND); + } + } + } +}