Skip to content

Commit 0162ae0

Browse files
author
S M Asad Rahman
committed
- delete user route
- update user route
1 parent acec904 commit 0162ae0

File tree

3 files changed

+65
-4
lines changed

3 files changed

+65
-4
lines changed

repositories/user.repository.ts

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,45 @@ const createUser = async (user: { name: string; email: string }) => {
3838
return users[0];
3939
};
4040

41-
export { getUsers, getUserById, createUser };
41+
/**
42+
* Update user
43+
*/
44+
const updateUser = async (
45+
id: number,
46+
user: { name: string; email: string },
47+
) => {
48+
const { name, email } = user;
49+
await db.query(
50+
`
51+
UPDATE users SET
52+
name = ?,
53+
email = ?,
54+
updated_at = DEFAULT
55+
WHERE id = ?;
56+
`,
57+
[name, email, id],
58+
);
59+
const users = await db.query(
60+
`SELECT * from users where id = ? limit 0, 1`,
61+
[id],
62+
);
63+
64+
return users[0];
65+
};
66+
67+
/**
68+
* Delete user
69+
*/
70+
const deleteUser = async (
71+
id: number,
72+
) => {
73+
await db.query(
74+
`
75+
DELETE FROM users
76+
WHERE id = ?;
77+
`,
78+
[id],
79+
);
80+
};
81+
82+
export { getUsers, getUserById, createUser, updateUser, deleteUser };

routes/routes.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ router.get("", (ctx: Context) => {
1010
router
1111
.get("/users", userRoutes.getUsers)
1212
.get("/users/:id", userRoutes.getUserById)
13-
.post("/users", userRoutes.createUser);
13+
.post("/users", userRoutes.createUser)
14+
.put("/users/:id", userRoutes.updateUser)
15+
.delete("/users/:id", userRoutes.deleteUser);
1416

1517
export { router };

routes/user.routes.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { Context, helpers } from "https://deno.land/x/[email protected]/mod.ts";
1+
import {
2+
Context,
3+
helpers,
4+
Status,
5+
} from "https://deno.land/x/[email protected]/mod.ts";
26
import * as userRepo from "./../repositories/user.repository.ts";
37

48
const getUsers = async (ctx: Context) => {
@@ -19,4 +23,18 @@ const createUser = async (ctx: Context) => {
1923
ctx.response.body = user;
2024
};
2125

22-
export { getUsers, getUserById, createUser };
26+
const updateUser = async (ctx: Context) => {
27+
const { id } = helpers.getQuery(ctx, { mergeParams: true });
28+
const request = ctx.request;
29+
const userData = (await request.body()).value;
30+
const user = await userRepo.updateUser(+id, userData);
31+
ctx.response.body = user;
32+
};
33+
34+
const deleteUser = async (ctx: Context) => {
35+
const { id } = helpers.getQuery(ctx, { mergeParams: true });
36+
await userRepo.deleteUser(+id);
37+
ctx.response.status = Status.NoContent;
38+
};
39+
40+
export { getUsers, getUserById, createUser, updateUser, deleteUser };

0 commit comments

Comments
 (0)