Skip to content

Commit 64a0b83

Browse files
committed
Add CRUD endpoints
1 parent b4f0c84 commit 64a0b83

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

routes/diary.route.ts

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,47 @@
1-
import fastify, { FastifyInstance } from "fastify";
1+
import { FastifyInstance } from "fastify";
2+
import { StatusCodes } from "http-status-codes";
23

4+
const dynamicDbData: any = [];
5+
6+
interface Diary {
7+
id: string;
8+
title: string;
9+
content: string;
10+
createdAt: string;
11+
}
12+
13+
// CRUD endpoints for diary app
314
export async function diaryRouter(app: FastifyInstance) {
415
app.get("/", async (request, reply) => {
5-
return { hello: "world" };
16+
reply.status(StatusCodes.OK).send(dynamicDbData);
17+
});
18+
19+
app.post("/", async (request, reply) => {
20+
const { body } = request;
21+
dynamicDbData.push(body);
22+
reply.status(StatusCodes.CREATED).send(body);
23+
});
24+
25+
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);
29+
if (index === -1) {
30+
reply.status(StatusCodes.NOT_FOUND).send();
31+
} else {
32+
dynamicDbData[index] = { ...dynamicDbData[index], ...(body as Diary) };
33+
reply.status(StatusCodes.OK).send(dynamicDbData[index]);
34+
}
35+
});
36+
37+
app.delete("/:id", async (request, reply) => {
38+
const { id } = request.params as { id: string };
39+
const index = dynamicDbData.findIndex((item: Diary) => item.id === id);
40+
if (index === -1) {
41+
reply.status(StatusCodes.NOT_FOUND).send();
42+
} else {
43+
dynamicDbData.splice(index, 1);
44+
reply.status(StatusCodes.NO_CONTENT).send();
45+
}
646
});
747
}

0 commit comments

Comments
 (0)