Skip to content

Commit c3a308b

Browse files
Add controller
1 parent c530f80 commit c3a308b

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

src/controller/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import * as ItemController from "./item.controller";
2+
3+
export const { createItem, getItem, getAllItems, updateItem, deleteItem } =
4+
ItemController;

src/controller/item.controller.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import { APIGatewayEvent } from "aws-lambda";
2+
import { StatusCodes } from "http-status-codes";
3+
import { createResponse, ErrorMessages } from "../utils";
4+
import { ItemService } from "../services";
5+
6+
const itemService = new ItemService();
7+
8+
const createItem = async (event: APIGatewayEvent) => {
9+
const itemData = JSON.parse(event.body ?? "{}");
10+
const newItem = await itemService.create(itemData);
11+
12+
return createResponse(StatusCodes.CREATED, newItem);
13+
};
14+
15+
const getItem = async (event: APIGatewayEvent) => {
16+
const itemId = event.pathParameters?.id;
17+
18+
if (!itemId) {
19+
return createResponse(StatusCodes.BAD_REQUEST, {
20+
message: ErrorMessages.ITEM_ID_REQUIRED,
21+
});
22+
}
23+
24+
const item = await itemService.get(itemId);
25+
26+
return createResponse(StatusCodes.OK, item);
27+
};
28+
29+
const getAllItems = async () => {
30+
const items = await itemService.getAll();
31+
32+
return createResponse(StatusCodes.OK, items);
33+
};
34+
35+
const updateItem = async (event: APIGatewayEvent) => {
36+
const itemId = event.pathParameters?.id;
37+
38+
if (!itemId) {
39+
return createResponse(StatusCodes.BAD_REQUEST, {
40+
message: ErrorMessages.ITEM_ID_REQUIRED,
41+
});
42+
}
43+
44+
const itemData = JSON.parse(event.body ?? "{}");
45+
const updatedItem = await itemService.update(itemId, itemData);
46+
47+
return createResponse(StatusCodes.OK, updatedItem);
48+
};
49+
50+
const deleteItem = async (event: APIGatewayEvent) => {
51+
const itemId = event.pathParameters?.id;
52+
53+
if (!itemId) {
54+
return createResponse(StatusCodes.BAD_REQUEST, {
55+
message: ErrorMessages.ITEM_ID_REQUIRED,
56+
});
57+
}
58+
59+
const itemDeleted = await itemService.get(itemId);
60+
await itemService.delete(itemId);
61+
62+
return createResponse(StatusCodes.NO_CONTENT, itemDeleted);
63+
};
64+
65+
export { createItem, getItem, getAllItems, updateItem, deleteItem };

0 commit comments

Comments
 (0)