Skip to content

Commit 7252588

Browse files
Update CRUD logic
1 parent 7c4cc10 commit 7252588

File tree

3 files changed

+68
-27
lines changed

3 files changed

+68
-27
lines changed

src/controller/item.controller.ts

Lines changed: 62 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,15 @@ const itemService = new ItemService();
77

88
const createItem = async (event: APIGatewayEvent) => {
99
const itemData = JSON.parse(event.body ?? "{}");
10-
const newItem = await itemService.create(itemData);
1110

12-
return createResponse(StatusCodes.CREATED, newItem);
11+
try {
12+
const newItem = await itemService.create(itemData);
13+
return createResponse(StatusCodes.CREATED, newItem);
14+
} catch (error) {
15+
return createResponse(StatusCodes.BAD_REQUEST, {
16+
message: ErrorMessages.INVALID_DATA,
17+
});
18+
}
1319
};
1420

1521
const getItem = async (event: APIGatewayEvent) => {
@@ -21,15 +27,34 @@ const getItem = async (event: APIGatewayEvent) => {
2127
});
2228
}
2329

24-
const item = await itemService.get(itemId);
30+
try {
31+
const item = await itemService.get(itemId);
2532

26-
return createResponse(StatusCodes.OK, item);
33+
if (!item) {
34+
return createResponse(StatusCodes.NOT_FOUND, {
35+
message: ErrorMessages.ITEM_NOT_FOUND,
36+
});
37+
}
38+
39+
return createResponse(StatusCodes.OK, item);
40+
} catch (error) {
41+
return createResponse(StatusCodes.NOT_FOUND, {
42+
message: ErrorMessages.INTERNAL_SERVER_ERROR,
43+
});
44+
}
2745
};
2846

2947
const getAllItems = async () => {
48+
console.log("getAllItems controller");
3049
const items = await itemService.getAll();
31-
32-
return createResponse(StatusCodes.OK, items);
50+
console.log("items", items);
51+
try {
52+
return createResponse(StatusCodes.OK, items);
53+
} catch (error) {
54+
return createResponse(StatusCodes.INTERNAL_SERVER_ERROR, {
55+
message: ErrorMessages.INTERNAL_SERVER_ERROR,
56+
});
57+
}
3358
};
3459

3560
const updateItem = async (event: APIGatewayEvent) => {
@@ -41,10 +66,24 @@ const updateItem = async (event: APIGatewayEvent) => {
4166
});
4267
}
4368

69+
const existingItem = await itemService.get(itemId);
70+
71+
if (!existingItem) {
72+
return createResponse(StatusCodes.NOT_FOUND, {
73+
message: ErrorMessages.ITEM_NOT_FOUND,
74+
});
75+
}
76+
4477
const itemData = JSON.parse(event.body ?? "{}");
45-
const updatedItem = await itemService.update(itemId, itemData);
4678

47-
return createResponse(StatusCodes.OK, updatedItem);
79+
try {
80+
const updatedItem = await itemService.update(itemId, itemData);
81+
return createResponse(StatusCodes.OK, updatedItem);
82+
} catch (error) {
83+
return createResponse(StatusCodes.BAD_REQUEST, {
84+
message: ErrorMessages.INVALID_DATA,
85+
});
86+
}
4887
};
4988

5089
const deleteItem = async (event: APIGatewayEvent) => {
@@ -56,10 +95,22 @@ const deleteItem = async (event: APIGatewayEvent) => {
5695
});
5796
}
5897

59-
const itemDeleted = await itemService.get(itemId);
60-
await itemService.delete(itemId);
98+
const existingItem = await itemService.get(itemId);
6199

62-
return createResponse(StatusCodes.NO_CONTENT, itemDeleted);
100+
if (!existingItem) {
101+
return createResponse(StatusCodes.NOT_FOUND, {
102+
message: ErrorMessages.ITEM_NOT_FOUND,
103+
});
104+
}
105+
106+
try {
107+
await itemService.delete(itemId);
108+
return createResponse(StatusCodes.OK, existingItem);
109+
} catch (error) {
110+
return createResponse(StatusCodes.INTERNAL_SERVER_ERROR, {
111+
message: ErrorMessages.INTERNAL_SERVER_ERROR,
112+
});
113+
}
63114
};
64115

65116
export { createItem, getItem, getAllItems, updateItem, deleteItem };

src/services/item.service.ts

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,22 @@ class ItemService {
88

99
async get(itemId: string) {
1010
const item = await ItemModel.get(itemId);
11-
12-
if (!item) {
13-
throw new Error(ErrorMessages.ITEM_NOT_FOUND);
14-
}
15-
16-
return item;
11+
return item || null;
1712
}
1813

1914
async getAll() {
2015
return await ItemModel.scan().exec();
2116
}
2217

2318
async update(itemId: string, itemData: ItemDTO) {
24-
const updatedItem = await ItemModel.update(itemId, itemData);
25-
26-
if (!updatedItem) {
27-
throw new Error(ErrorMessages.ITEM_NOT_FOUND);
19+
if (!itemData.name) {
20+
throw new Error(ErrorMessages.INVALID_DATA);
2821
}
29-
30-
return updatedItem;
22+
return await ItemModel.update(itemId, itemData);
3123
}
3224

3325
async delete(itemId: string) {
34-
const item = await this.get(itemId);
35-
await ItemModel.delete(itemId);
36-
37-
return item;
26+
return await ItemModel.delete(itemId);
3827
}
3928
}
4029

src/utils/error-messages.utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export const ErrorMessages = {
33
ITEM_NOT_FOUND: "Item not found.",
44
INVALID_DATA: "Invalid data provided.",
55
METHOD_NOT_ALLOWED: "Method not allowed.",
6+
INTERNAL_SERVER_ERROR: `Internal server error.`,
67
};
78

89
export default ErrorMessages;

0 commit comments

Comments
 (0)