add task module
This commit is contained in:
parent
e447aef063
commit
930068c7e6
@ -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"
|
||||
|
||||
@ -1,22 +0,0 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
|
||||
describe('AppController', () => {
|
||||
let appController: AppController;
|
||||
|
||||
beforeEach(async () => {
|
||||
const app: TestingModule = await Test.createTestingModule({
|
||||
controllers: [AppController],
|
||||
providers: [AppService],
|
||||
}).compile();
|
||||
|
||||
appController = app.get<AppController>(AppController);
|
||||
});
|
||||
|
||||
describe('root', () => {
|
||||
it('should return "Hello World!"', () => {
|
||||
expect(appController.getHello()).toBe('Hello World!');
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -1,12 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
@ -1,10 +1,9 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
import { TaskModule } from './task/task.module';
|
||||
|
||||
@Module({
|
||||
imports: [],
|
||||
controllers: [AppController],
|
||||
providers: [AppService],
|
||||
imports: [TaskModule],
|
||||
controllers: [],
|
||||
providers: [],
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
@Injectable()
|
||||
export class AppService {
|
||||
getHello(): string {
|
||||
return 'Hello World!';
|
||||
}
|
||||
}
|
||||
3
src/task/dto/create-task.dto.ts
Normal file
3
src/task/dto/create-task.dto.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export class CreateTaskDto {
|
||||
title: string;
|
||||
}
|
||||
4
src/task/dto/update-task.dto.ts
Normal file
4
src/task/dto/update-task.dto.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export class UpdateTaskDto {
|
||||
title: string;
|
||||
isCompleted: boolean;
|
||||
}
|
||||
51
src/task/task.controller.ts
Normal file
51
src/task/task.controller.ts
Normal file
@ -0,0 +1,51 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
Param,
|
||||
Patch,
|
||||
Post,
|
||||
Put,
|
||||
} from '@nestjs/common';
|
||||
import { CreateTaskDto } from './dto/create-task.dto';
|
||||
import { UpdateTaskDto } from './dto/update-task.dto';
|
||||
import { TaskService } from './task.service';
|
||||
|
||||
@Controller('task')
|
||||
export class TaskController {
|
||||
constructor(private readonly taskService: TaskService) {}
|
||||
|
||||
@Get('all')
|
||||
findAll() {
|
||||
return this.taskService.findAll();
|
||||
}
|
||||
|
||||
@Get('by-id/:id')
|
||||
findById(
|
||||
@Param('id')
|
||||
id: string,
|
||||
) {
|
||||
return this.taskService.findById(Number(id));
|
||||
}
|
||||
|
||||
@Post()
|
||||
create(@Body() dto: CreateTaskDto) {
|
||||
return this.taskService.create(dto);
|
||||
}
|
||||
|
||||
@Put(':id')
|
||||
update(@Param('id') id: string, @Body() dto: UpdateTaskDto) {
|
||||
return this.taskService.update(Number(id), dto);
|
||||
}
|
||||
|
||||
@Patch(':id')
|
||||
patchUpdate(@Param('id') id: string, @Body() dto: Partial<UpdateTaskDto>) {
|
||||
return this.taskService.patchTask(Number(id), dto);
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
delete(@Param('id') id: string) {
|
||||
return this.taskService.delete(Number(id));
|
||||
}
|
||||
}
|
||||
9
src/task/task.module.ts
Normal file
9
src/task/task.module.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { TaskService } from './task.service';
|
||||
import { TaskController } from './task.controller';
|
||||
|
||||
@Module({
|
||||
controllers: [TaskController],
|
||||
providers: [TaskService],
|
||||
})
|
||||
export class TaskModule {}
|
||||
70
src/task/task.service.ts
Normal file
70
src/task/task.service.ts
Normal file
@ -0,0 +1,70 @@
|
||||
import { Injectable, NotFoundException } from '@nestjs/common';
|
||||
import { CreateTaskDto } from './dto/create-task.dto';
|
||||
import { UpdateTaskDto } from './dto/update-task.dto';
|
||||
|
||||
@Injectable()
|
||||
export class TaskService {
|
||||
private tasks = [
|
||||
{
|
||||
id: 1,
|
||||
title: 'Learn Nestjs',
|
||||
isCompleted: false,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: 'Build API',
|
||||
isCompleted: true,
|
||||
},
|
||||
];
|
||||
|
||||
findAll() {
|
||||
return this.tasks;
|
||||
}
|
||||
|
||||
findById(id: number) {
|
||||
const task = this.tasks.find((task) => task.id === id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFoundException(`Not found task with id ${id}`);
|
||||
}
|
||||
|
||||
return task;
|
||||
}
|
||||
|
||||
create(dto: CreateTaskDto) {
|
||||
const { title } = dto;
|
||||
const newTask = {
|
||||
id: this.tasks.length + 1,
|
||||
title,
|
||||
isCompleted: false,
|
||||
};
|
||||
|
||||
this.tasks.push(newTask);
|
||||
|
||||
return newTask;
|
||||
}
|
||||
|
||||
update(id: number, dto: UpdateTaskDto) {
|
||||
const task = this.findById(id);
|
||||
const { isCompleted, title } = dto;
|
||||
|
||||
task.isCompleted = isCompleted;
|
||||
task.title = title;
|
||||
|
||||
return task;
|
||||
}
|
||||
|
||||
patchTask(id: number, dto: Partial<UpdateTaskDto>) {
|
||||
const task = this.findById(id);
|
||||
|
||||
Object.assign(task, dto);
|
||||
|
||||
return task;
|
||||
}
|
||||
|
||||
delete(id: number) {
|
||||
const task = this.findById(id);
|
||||
this.tasks = this.tasks.filter((t) => t !== task);
|
||||
return task;
|
||||
}
|
||||
}
|
||||
@ -1008,6 +1008,11 @@
|
||||
path-to-regexp "8.2.0"
|
||||
tslib "2.8.1"
|
||||
|
||||
"@nestjs/mapped-types@*":
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz#b9b536b7c3571567aa1d0223db8baa1a51505a19"
|
||||
integrity sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==
|
||||
|
||||
"@nestjs/platform-express@^11.0.1":
|
||||
version "11.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@nestjs/platform-express/-/platform-express-11.1.2.tgz#e4b2671c74876ff399f50b7a7f36cb4b4c9e35ec"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user