From acdb7ad9c94fd5e20e9900f2f59f5255f0b3a247 Mon Sep 17 00:00:00 2001 From: Joe Arndt Date: Wed, 10 Dec 2025 16:14:02 -0600 Subject: [PATCH] configured base route and setup healthcheck endpoint --- .../{Nest Default Get.bru => Healthcheck.bru} | 4 +-- .../environments/common-cents.bru | 2 +- package-lock.json | 21 ++++++++++++ package.json | 1 + src/app.controller.ts | 9 ++--- src/app.module.ts | 7 ++-- src/app.service.ts | 8 ----- .../expenses/create-expense.dto.ts | 1 + src/controllers/expenses/expense.entity.ts | 1 + .../expenses/expenses.controller.ts | 34 +++++++++++++++++++ .../expenses/update-expense.dto.ts | 4 +++ src/main.ts | 1 + src/services/expenses.service.ts | 26 ++++++++++++++ 13 files changed, 98 insertions(+), 21 deletions(-) rename bruno/Common Cents/{Nest Default Get.bru => Healthcheck.bru} (57%) delete mode 100644 src/app.service.ts create mode 100644 src/controllers/expenses/create-expense.dto.ts create mode 100644 src/controllers/expenses/expense.entity.ts create mode 100644 src/controllers/expenses/expenses.controller.ts create mode 100644 src/controllers/expenses/update-expense.dto.ts create mode 100644 src/services/expenses.service.ts diff --git a/bruno/Common Cents/Nest Default Get.bru b/bruno/Common Cents/Healthcheck.bru similarity index 57% rename from bruno/Common Cents/Nest Default Get.bru rename to bruno/Common Cents/Healthcheck.bru index aa6ef24..146c337 100644 --- a/bruno/Common Cents/Nest Default Get.bru +++ b/bruno/Common Cents/Healthcheck.bru @@ -1,11 +1,11 @@ meta { - name: Nest Default Get + name: Healthcheck type: http seq: 2 } get { - url: {{localUrl}} + url: {{localBaseUrl}}/health body: none auth: inherit } diff --git a/bruno/Common Cents/environments/common-cents.bru b/bruno/Common Cents/environments/common-cents.bru index 6465dab..6331ff7 100644 --- a/bruno/Common Cents/environments/common-cents.bru +++ b/bruno/Common Cents/environments/common-cents.bru @@ -1,3 +1,3 @@ vars { - localUrl: http://localhost:3000 + localBaseUrl: http://localhost:3000/common-cents } diff --git a/package-lock.json b/package-lock.json index 44fb648..cff4acb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@nestjs/common": "^11.0.1", "@nestjs/core": "^11.0.1", + "@nestjs/mapped-types": "*", "@nestjs/platform-express": "^11.0.1", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1" @@ -2195,6 +2196,26 @@ } } }, + "node_modules/@nestjs/mapped-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz", + "integrity": "sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "class-transformer": "^0.4.0 || ^0.5.0", + "class-validator": "^0.13.0 || ^0.14.0", + "reflect-metadata": "^0.1.12 || ^0.2.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, "node_modules/@nestjs/platform-express": { "version": "11.1.9", "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.9.tgz", diff --git a/package.json b/package.json index a4040e1..121f250 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "dependencies": { "@nestjs/common": "^11.0.1", "@nestjs/core": "^11.0.1", + "@nestjs/mapped-types": "*", "@nestjs/platform-express": "^11.0.1", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1" diff --git a/src/app.controller.ts b/src/app.controller.ts index 61c9c36..f86c61b 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -1,12 +1,7 @@ import { Controller, Get } from '@nestjs/common'; -import { AppService } from './app.service'; @Controller() export class AppController { - constructor(private readonly appService: AppService) { } - - @Get() - getHello(): string { - return this.appService.getHello(); - } + @Get('health') + health(): void { } } diff --git a/src/app.module.ts b/src/app.module.ts index 8662803..c28ca1c 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,10 +1,11 @@ import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; -import { AppService } from './app.service'; +import { ExpensesService } from './services/expenses.service'; +import { ExpensesController } from './controllers/expenses/expenses.controller'; @Module({ imports: [], - controllers: [AppController], - providers: [AppService], + controllers: [AppController, ExpensesController], + providers: [ExpensesService], }) export class AppModule {} diff --git a/src/app.service.ts b/src/app.service.ts deleted file mode 100644 index 927d7cc..0000000 --- a/src/app.service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -@Injectable() -export class AppService { - getHello(): string { - return 'Hello World!'; - } -} diff --git a/src/controllers/expenses/create-expense.dto.ts b/src/controllers/expenses/create-expense.dto.ts new file mode 100644 index 0000000..b4f26aa --- /dev/null +++ b/src/controllers/expenses/create-expense.dto.ts @@ -0,0 +1 @@ +export class CreateExpenseDto {} diff --git a/src/controllers/expenses/expense.entity.ts b/src/controllers/expenses/expense.entity.ts new file mode 100644 index 0000000..24e65cc --- /dev/null +++ b/src/controllers/expenses/expense.entity.ts @@ -0,0 +1 @@ +export class Expense {} diff --git a/src/controllers/expenses/expenses.controller.ts b/src/controllers/expenses/expenses.controller.ts new file mode 100644 index 0000000..cf5e0e7 --- /dev/null +++ b/src/controllers/expenses/expenses.controller.ts @@ -0,0 +1,34 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { ExpensesService } from '../../services/expenses.service'; +import { CreateExpenseDto } from './create-expense.dto'; +import { UpdateExpenseDto } from './update-expense.dto'; + +@Controller('expenses') +export class ExpensesController { + constructor(private readonly expensesService: ExpensesService) {} + + @Post() + create(@Body() createExpenseDto: CreateExpenseDto) { + return this.expensesService.create(createExpenseDto); + } + + @Get() + findAll() { + return this.expensesService.findAll(); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.expensesService.findOne(+id); + } + + @Patch(':id') + update(@Param('id') id: string, @Body() updateExpenseDto: UpdateExpenseDto) { + return this.expensesService.update(+id, updateExpenseDto); + } + + @Delete(':id') + remove(@Param('id') id: string) { + return this.expensesService.remove(+id); + } +} diff --git a/src/controllers/expenses/update-expense.dto.ts b/src/controllers/expenses/update-expense.dto.ts new file mode 100644 index 0000000..c50ce9a --- /dev/null +++ b/src/controllers/expenses/update-expense.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/mapped-types'; +import { CreateExpenseDto } from './create-expense.dto'; + +export class UpdateExpenseDto extends PartialType(CreateExpenseDto) {} diff --git a/src/main.ts b/src/main.ts index 9307714..5f27e5f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -4,6 +4,7 @@ import { NestExpressApplication } from '@nestjs/platform-express'; async function bootstrap() { const app = await NestFactory.create(AppModule); + app.setGlobalPrefix('common-cents'); await app.listen(process.env.PORT ?? 3000); } bootstrap(); diff --git a/src/services/expenses.service.ts b/src/services/expenses.service.ts new file mode 100644 index 0000000..eab4fb5 --- /dev/null +++ b/src/services/expenses.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@nestjs/common'; +import { CreateExpenseDto } from '../controllers/expenses/create-expense.dto'; +import { UpdateExpenseDto } from '../controllers/expenses/update-expense.dto'; + +@Injectable() +export class ExpensesService { + create(createExpenseDto: CreateExpenseDto) { + return 'This action adds a new expense'; + } + + findAll() { + return `This action returns all expenses`; + } + + findOne(id: number) { + return `This action returns a #${id} expense`; + } + + update(id: number, updateExpenseDto: UpdateExpenseDto) { + return `This action updates a #${id} expense`; + } + + remove(id: number) { + return `This action removes a #${id} expense`; + } +}