Skip to content

Commit

Permalink
Merge branch 'main' into create-post-form
Browse files Browse the repository at this point in the history
  • Loading branch information
34719022 committed Nov 22, 2024
2 parents bcc27a3 + 69f9322 commit 5bf630f
Show file tree
Hide file tree
Showing 19 changed files with 1,004 additions and 494 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,15 @@ API is provided by Firebase Cloud Functions. Database is provided by Firestore.
- example
```json
{
"name": "testUser"
"name": "testUser",
"uid": "uid genereated by Firebase Authentication"
}
```
In case of streak is not specified, it will be set to 0.
```json
{
"name": "testUser",
"uid": "uid genereated by Firebase Authentication",
"streak": 10
}
```
Expand Down
6 changes: 3 additions & 3 deletions functions/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 8 additions & 5 deletions functions/src/routers/goalRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,14 @@ router.route("/").post(async (req: Request, res: Response) => {

try {
// goalId をドキュメント名として使用してデータを保存
await db.collection("goal").doc(goalId).set({
userId: userId,
deadline: deadline,
text: text,
});
await db
.collection("goal")
.doc(goalId)
.set({
userId: userId,
deadline: admin.firestore.Timestamp.fromDate(new Date(deadline)),
text: text,
});

return res
.status(201)
Expand Down
35 changes: 14 additions & 21 deletions functions/src/routers/userRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ router.route("/").get(async (req: Request, res: Response) => {
}

const userData = userSnapshot.docs.map((doc) => ({
id: doc.id,
uid: doc.id,
...doc.data(),
}));

Expand All @@ -42,7 +42,7 @@ router.route("/id/:userId").get(async (req: Request, res: Response) => {
if (!userDoc.exists) {
return res.status(404).json({ message: "User not found" });
}
return res.json({ id: userDoc.id, ...userDoc.data() });
return res.json({ uid: userDoc.id, ...userDoc.data() });
} catch (error) {
return res.status(500).json({ message: "Error fetching user data", error });
}
Expand All @@ -63,7 +63,7 @@ router.route("/name/:userName").get(async (req: Request, res: Response) => {
}

const userData = userSnapshot.docs.map((doc) => ({
id: doc.id,
uid: doc.id,
...doc.data(),
}));

Expand All @@ -75,44 +75,37 @@ router.route("/name/:userName").get(async (req: Request, res: Response) => {

// POST: 新しいユーザーを登録
router.route("/").post(async (req: Request, res: Response) => {
const userId = db.collection("user").doc().id; // FirebaseのドキュメントIDを生成

if (!userId) {
return res.status(400).json({ message: "User ID is required" });
}

let name: User["name"];
let uid: string;
let streak: User["streak"];

try {
({ name, streak = 0 } = req.body as User);
({ name, uid, streak = 0 } = req.body);
} catch (error) {
return res.status(400).json({ message: "Invalid request body", error });
}

if (!name || streak === undefined) {
if (!name || !uid || streak === undefined) {
return res.status(400).json({ message: "name and streak are required" });
}

// 既に同じ名前のuserが存在する場合はエラーを返す
const userSnapshot = await getUserFromName(name);
// const userSnapshot = await getUserFromName(name);

if (!userSnapshot.empty) {
return res.status(409).json({
message: `A user with the same user name '${name}' already exists`,
});
}
// if (!userSnapshot.empty) {
// return res.status(409).json({
// message: `A user with the same user name '${name}' already exists`,
// });
// }

try {
// userIdをドキュメント名として使用してデータを保存
await db.collection("user").doc(userId).set({
await db.collection("user").doc(uid).set({
name: name,
streak: streak,
});

return res
.status(201)
.json({ message: "User created successfully", userId });
return res.status(201).json({ message: "User created successfully", uid });
} catch (error) {
return res.status(500).json({ message: "Error creating user", error });
}
Expand Down
Loading

0 comments on commit 5bf630f

Please sign in to comment.