Skip to content

Commit d124264

Browse files
functional Crud
1 parent f487c2a commit d124264

File tree

2 files changed

+32
-26
lines changed

2 files changed

+32
-26
lines changed

src/controllers/projects/projects.controller.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,35 @@ export class ProjectsController {
66
constructor(private databaseService: DatabaseService) { }
77
@Get(":projectID")
88
@HttpCode(HttpStatus.FOUND)
9-
get(@Param("projectID") projectID: string): object {
10-
return { data: "maintenance" }//AppService.getProject(projectID);
9+
async get(@Param("projectID") projectID: number): Promise<object> {
10+
return { data: await this.databaseService.getProject(projectID) }//AppService.getProject(projectID);
1111
}
1212
@Get()
1313
@HttpCode(HttpStatus.FOUND)
14-
list(@Query() params: any): object {
15-
return this.databaseService.getProjects(params);
14+
async list(@Query() params: any): Promise<object> {
15+
return { data: await this.databaseService.getProjects(params) }
1616
}
1717
@Post()
1818
@HttpCode(HttpStatus.CREATED)
19-
async create(@Body() payload: any) {
19+
async create(@Body() payload: any): Promise<object> {
2020
const { name, description, location } = payload
2121
let newProduct = await this.databaseService.createProject(name, description, location)
2222

2323
return { msg: "created", data: newProduct };
2424
}
2525
@Put(":projectID")
2626
@HttpCode(HttpStatus.ACCEPTED)
27-
update(@Param("projectID") projectID: string, @Body() payload: any): object {
28-
return this.databaseService.updateProject(projectID, payload);
27+
async update(@Param("projectID") projectID: number, @Body() payload: any): Promise<object> {
28+
return { msg: "updated", data: await this.databaseService.updateProject(projectID, payload) }
2929
}
3030
@Delete(":projectID")
31-
delete(@Res() response: Response, @Param("projectID") projectID: string) {
32-
let deleted = this.databaseService.deleteProject(projectID)
31+
async delete(@Res() response: Response, @Param("projectID") projectID: number) {
32+
let deleted = await this.databaseService.deleteProject(projectID)
3333
let status = HttpStatus.OK,
3434
res = { msg: "deleted" }
35-
if (projectID != "1") {
35+
if (!deleted) {
36+
res.msg = "not found"
3637
status = HttpStatus.NOT_FOUND
37-
res = { msg: "project not found" }
3838
}
3939
response.status(status).send(res)
4040
}

src/services/database/database.service.ts

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Injectable, Inject } from '@nestjs/common';
1+
import { Injectable, Inject, NotFoundException } from '@nestjs/common';
22
import { Client } from 'pg';
33
import { InjectRepository } from '@nestjs/typeorm';
44
import { Repository } from 'typeorm'; // 👈 import
@@ -33,26 +33,32 @@ export class DatabaseService {
3333
"2": "rust"
3434
}
3535
}
36-
async createProject(name: string, description: string, location: string) {
36+
async createProject(name: string, description: string, location: string): Promise<object> {
3737
let poject = this.projectRepo.create({ name, description, location })
3838
await this.projectRepo.save(poject)
3939
return { id: poject.id };
4040
}
41-
getProject(id): object {
42-
return {
43-
data: this.projectRepo.findOne(id)
44-
};
41+
async getProject(id: number): Promise<object> {
42+
const project = await this.projectRepo.findOne(id);
43+
if (!project) {
44+
throw new NotFoundException(`Product #${id} not found`);
45+
}
46+
return project;
4547
}
46-
getProjects(params): object {
47-
//this.clientPg.query("SELECT * FROM projects")
48-
return {
49-
data: this.projectRepo.find()
50-
};
48+
async getProjects(params): Promise<object> {
49+
let data = await this.projectRepo.find()
50+
return data;
5151
}
52-
updateProject(id, payload): object {
53-
return { data: this.db.projects[id] };
52+
async updateProject(id: number, payload: object): Promise<object> {
53+
const project = await this.projectRepo.findOne(id);
54+
this.projectRepo.merge(project, payload);
55+
return await this.projectRepo.save(project);
5456
}
55-
deleteProject(id): object {
56-
return { data: this.db.projects[id] };
57+
async deleteProject(id: number): Promise<boolean> {
58+
let deleted = await this.projectRepo.delete(id)
59+
if (deleted.affected != 1) {
60+
return false
61+
}
62+
return true
5763
}
5864
}

0 commit comments

Comments
 (0)