-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrequests.ts
More file actions
72 lines (64 loc) · 1.87 KB
/
requests.ts
File metadata and controls
72 lines (64 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { zValidator } from "@hono/zod-validator";
import type { UserID } from "common/types";
import { Hono } from "hono";
import { z } from "zod";
import {
approveRequest,
cancelRequest,
rejectRequest,
sendRequest,
} from "../database/requests";
import { getUserId } from "../firebase/auth/db";
import { error } from "../lib/error";
import { param } from "../lib/validator";
const router = new Hono()
// リクエストの送信
.put(
"/send/:receiverId",
zValidator("param", z.object({ receiverId: z.coerce.number() })),
async (c) => {
const receiverId = c.req.valid("param").receiverId;
const senderId = await getUserId(c);
const sentRequest = await sendRequest({
senderId: senderId,
receiverId: receiverId as UserID,
});
c.status(201);
return c.json(sentRequest);
},
)
// リクエストの承認
.put(
"/accept/:senderId",
param({ senderId: z.coerce.number() }),
async (c) => {
const senderId = c.req.valid("param").senderId;
const receiverId = await getUserId(c);
await approveRequest(senderId as UserID, receiverId);
c.status(201);
return c.json({});
},
)
.put(
"/cancel/:opponentId",
param({ opponentId: z.coerce.number() }),
async (c) => {
const opponentId = c.req.valid("param").opponentId;
const requesterId = await getUserId(c);
await cancelRequest(requesterId, opponentId);
return c.json({});
},
)
// リクエストの拒否
.put(
"/reject/:opponentId",
param({ opponentId: z.coerce.number() }),
async (c) => {
const opponentId = c.req.valid("param").opponentId;
const requesterId = await getUserId(c);
await rejectRequest(opponentId as UserID, requesterId); //TODO 名前を良いのに変える
c.status(204);
return c.json({});
},
);
export default router;