Skip to content

Commit 1ec2303

Browse files
committed
Add ID to each note + Retrieve note per their ID
1 parent 64a0b83 commit 1ec2303

File tree

1 file changed

+45
-8
lines changed

1 file changed

+45
-8
lines changed

routes/diary.route.ts

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { StatusCodes } from "http-status-codes";
44
const dynamicDbData: any = [];
55

66
interface Diary {
7-
id: string;
7+
id?: number;
88
title: string;
99
content: string;
10-
createdAt: string;
10+
createdAt?: Date;
1111
}
1212

1313
// CRUD endpoints for diary app
@@ -16,16 +16,48 @@ export async function diaryRouter(app: FastifyInstance) {
1616
reply.status(StatusCodes.OK).send(dynamicDbData);
1717
});
1818

19+
app.get("/:id", async (request, reply) => {
20+
const { id } = request.params as { id: string };
21+
const idInteger = parseInt(id, 10); // Cast to integer decimal number
22+
23+
const diary = dynamicDbData.find((item: Diary) => item.id === idInteger);
24+
25+
if (!diary) {
26+
console.info("Note entry not found");
27+
reply.status(StatusCodes.NOT_FOUND).send({
28+
message: "Note entry not found",
29+
});
30+
} else {
31+
reply.status(StatusCodes.OK).send(diary);
32+
}
33+
});
34+
1935
app.post("/", async (request, reply) => {
20-
const { body } = request;
36+
const body = request.body as Diary;
37+
38+
if (!body.title || !body.content) {
39+
reply.status(StatusCodes.BAD_REQUEST).send();
40+
return;
41+
}
42+
43+
body.id = dynamicDbData.length + 1;
44+
45+
if (!body.createdAt) {
46+
body.createdAt = new Date();
47+
}
48+
2149
dynamicDbData.push(body);
2250
reply.status(StatusCodes.CREATED).send(body);
2351
});
2452

2553
app.patch("/:id", async (request, reply) => {
26-
const { id } = request.params as Diary;
27-
const { body } = request;
28-
const index = dynamicDbData.findIndex((item: Diary) => item.id === id);
54+
const body = request.body as Diary;
55+
const { id } = request.params as { id: string };
56+
const idInteger = parseInt(id, 10); // Cast to integer decimal number
57+
58+
const index = dynamicDbData.findIndex(
59+
(item: Diary) => item.id === idInteger
60+
);
2961
if (index === -1) {
3062
reply.status(StatusCodes.NOT_FOUND).send();
3163
} else {
@@ -36,12 +68,17 @@ export async function diaryRouter(app: FastifyInstance) {
3668

3769
app.delete("/:id", async (request, reply) => {
3870
const { id } = request.params as { id: string };
39-
const index = dynamicDbData.findIndex((item: Diary) => item.id === id);
71+
const index = dynamicDbData.findIndex(
72+
(item: Diary) => item.id === parseInt(id)
73+
);
74+
4075
if (index === -1) {
4176
reply.status(StatusCodes.NOT_FOUND).send();
4277
} else {
4378
dynamicDbData.splice(index, 1);
44-
reply.status(StatusCodes.NO_CONTENT).send();
79+
reply.status(StatusCodes.OK).send({
80+
message: "Note entry deleted",
81+
});
4582
}
4683
});
4784
}

0 commit comments

Comments
 (0)