Skip to content

Commit ec8d0a0

Browse files
committed
format & rewrite
1 parent 525aa9c commit ec8d0a0

File tree

5 files changed

+136
-158
lines changed

5 files changed

+136
-158
lines changed
Lines changed: 27 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,51 @@
11
import { User, UserFollow } from "@db_models"
22

3-
// REWRITE MEE!!!
43
export default async (payload = {}) => {
54
const { user_id, from_user_id, basic } = payload
65

76
if (!user_id) {
87
throw new OperationError(400, "Missing user_id")
98
}
109

11-
let data = null
10+
const isMultipleUsers = Array.isArray(user_id)
1211

13-
if (Array.isArray(user_id)) {
14-
data = await User.find({
15-
_id: {
16-
$in: user_id,
17-
},
18-
}).catch((err) => {
19-
return false
20-
})
21-
22-
data = data.map((user) => {
23-
user = user.toObject()
24-
return user
25-
})
12+
let usersData = null
2613

27-
if (from_user_id && !basic) {
28-
const following = await UserFollow.find({
29-
to: {
30-
$in: ids,
31-
},
32-
user_id: from_user_id,
33-
}).catch(() => false)
14+
if (isMultipleUsers) {
15+
usersData = await User.find({ _id: { $in: user_id } })
3416

35-
following.forEach((follow) => {
36-
const userIndex = data.findIndex((user) => {
37-
return user._id === follow.to
38-
})
39-
40-
if (userIndex > -1) {
41-
data[userIndex].following = true
42-
}
43-
})
17+
if (!usersData || !usersData.length) {
18+
return []
4419
}
4520

46-
return data
21+
usersData = usersData.map((user) => user.toObject())
4722
} else {
48-
data = await User.findOne({
49-
_id: user_id,
50-
}).catch((err) => {
51-
return false
52-
})
23+
const userData = await User.findOne({ _id: user_id })
5324

54-
if (!data) {
25+
if (!userData) {
5526
throw new OperationError(404, "User not found")
5627
}
5728

58-
data = data.toObject()
29+
usersData = [userData.toObject()]
30+
}
5931

60-
if (from_user_id && !basic) {
61-
const isFollowed = await UserFollow.findOne({
62-
user_id: from_user_id,
63-
to: user_id,
64-
}).catch(() => false)
32+
if (from_user_id && !basic) {
33+
const targetUserIds = usersData.map((user) => user._id)
6534

66-
data.following = !!isFollowed
67-
}
35+
const followingData = await UserFollow.find({
36+
user_id: from_user_id,
37+
to: { $in: targetUserIds },
38+
})
6839

69-
return data
40+
const followedUserIds = new Set(
41+
followingData.map((follow) => follow.to.toString()),
42+
)
43+
44+
usersData = usersData.map((user) => ({
45+
...user,
46+
following: followedUserIds.has(user._id.toString()),
47+
}))
7048
}
49+
50+
return isMultipleUsers ? usersData : usersData[0]
7151
}
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
import { User, UserFollow } from "@db_models"
22

33
export default async (payload = {}) => {
4-
const { user_id, data = false, limit = 50, offset = 0 } = payload
4+
const { user_id, data = false, limit = 50, offset = 0 } = payload
55

6-
if (!user_id) {
7-
throw new OperationError(400, "Missing user_id")
8-
}
6+
if (!user_id) {
7+
throw new OperationError(400, "Missing user_id")
8+
}
99

10-
if (data) {
11-
let followers = await UserFollow.find({
12-
to: user_id
13-
})
14-
.limit(limit)
15-
.skip(offset)
10+
if (data) {
11+
let followers = await UserFollow.find({
12+
to: user_id,
13+
})
14+
.limit(limit)
15+
.skip(offset)
1616

17-
const followersData = await User.find({
18-
_id: {
19-
$in: followers.map((follow) => {
20-
return follow.user_id
21-
})
22-
}
23-
})
17+
const followersData = await User.find({
18+
_id: {
19+
$in: followers.map((follow) => {
20+
return follow.user_id
21+
}),
22+
},
23+
})
2424

25-
return followersData
26-
} else {
27-
const count = await UserFollow.countDocuments({
28-
to: user_id
29-
})
25+
return followersData
26+
} else {
27+
const count = await UserFollow.countDocuments({
28+
to: user_id,
29+
})
3030

31-
return {
32-
count
33-
}
34-
}
35-
}
31+
return {
32+
count,
33+
}
34+
}
35+
}
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
import { User } from "@db_models"
22

33
export default async (payload = {}) => {
4-
const { username } = payload
4+
const { username } = payload
55

6-
if (!username) {
7-
throw new OperationError(400, "Missing username")
8-
}
6+
if (!username) {
7+
throw new OperationError(400, "Missing username")
8+
}
99

10-
let user = await User.findOne({
11-
username
12-
}).catch((err) => {
13-
return false
14-
})
10+
let user = await User.findOne({
11+
username,
12+
}).catch((err) => {
13+
return false
14+
})
1515

16-
if (!user) {
17-
throw new OperationError(404, "User not found")
18-
}
16+
if (!user) {
17+
throw new OperationError(404, "User not found")
18+
}
1919

20-
return {
21-
user_id: user._id.toString()
22-
}
23-
}
20+
return {
21+
user_id: user._id.toString(),
22+
}
23+
}
Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,51 @@
11
import { User, UserFollow } from "@db_models"
22

33
export default async (payload = {}) => {
4-
let { user_id, from_user_id, to } = payload
5-
6-
if (typeof from_user_id === "undefined") {
7-
throw new OperationError(400, "[from_user_id] not provided")
8-
}
9-
if (typeof user_id === "undefined") {
10-
throw new OperationError(400, "[user_id] not provided")
11-
}
12-
13-
const user = await User.findById(user_id).catch((err) => {
14-
return false
15-
})
16-
17-
if (!user) {
18-
throw new OperationError(404, "User not found")
19-
}
20-
21-
let followObj = await UserFollow.findOne({
22-
user_id: from_user_id,
23-
to: user_id,
24-
}).catch((err) => {
25-
return false
26-
})
27-
28-
if (typeof to === "undefined") {
29-
if (followObj) {
30-
to = false
31-
} else {
32-
to = true
33-
}
34-
}
35-
36-
if (to === true) {
37-
followObj = new UserFollow({
38-
user_id: from_user_id,
39-
to: user_id,
40-
})
41-
42-
await followObj.save()
43-
} else {
44-
await UserFollow.findByIdAndDelete(followObj._id)
45-
}
46-
47-
return {
48-
following: to,
49-
count: await UserFollow.countDocuments({ to: user_id }),
50-
}
51-
}
4+
let { user_id, from_user_id, to } = payload
5+
6+
if (typeof from_user_id === "undefined") {
7+
throw new OperationError(400, "[from_user_id] not provided")
8+
}
9+
if (typeof user_id === "undefined") {
10+
throw new OperationError(400, "[user_id] not provided")
11+
}
12+
13+
const user = await User.findById(user_id).catch((err) => {
14+
return false
15+
})
16+
17+
if (!user) {
18+
throw new OperationError(404, "User not found")
19+
}
20+
21+
let followObj = await UserFollow.findOne({
22+
user_id: from_user_id,
23+
to: user_id,
24+
}).catch((err) => {
25+
return false
26+
})
27+
28+
if (typeof to === "undefined") {
29+
if (followObj) {
30+
to = false
31+
} else {
32+
to = true
33+
}
34+
}
35+
36+
if (to === true) {
37+
followObj = new UserFollow({
38+
user_id: from_user_id,
39+
to: user_id,
40+
})
41+
42+
await followObj.save()
43+
} else {
44+
await UserFollow.findByIdAndDelete(followObj._id)
45+
}
46+
47+
return {
48+
following: to,
49+
count: await UserFollow.countDocuments({ to: user_id }),
50+
}
51+
}
Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
11
import { User } from "@db_models"
22

33
export default async (user_id, update) => {
4-
if (typeof user_id === "undefined") {
5-
throw new Error("No user_id provided")
6-
}
4+
if (typeof user_id === "undefined") {
5+
throw new Error("No user_id provided")
6+
}
77

8-
if (typeof update === "undefined") {
9-
throw new Error("No update provided")
10-
}
8+
if (typeof update === "undefined") {
9+
throw new Error("No update provided")
10+
}
1111

12-
let user = await User.findById(user_id)
12+
let user = await User.findById(user_id)
1313

14-
if (!user) {
15-
throw new OperationError(404, "User not found")
16-
}
14+
if (!user) {
15+
throw new OperationError(404, "User not found")
16+
}
1717

18-
const updateKeys = Object.keys(update)
18+
const updateKeys = Object.keys(update)
1919

20-
updateKeys.forEach((key) => {
21-
user[key] = update[key]
22-
})
20+
updateKeys.forEach((key) => {
21+
user[key] = update[key]
22+
})
2323

24-
await user.save()
24+
await user.save()
2525

26-
user = user.toObject()
26+
user = user.toObject()
2727

28-
//global.websocket.io.of("/").emit(`user.update.${update}`, user)
29-
30-
return user
31-
}
28+
return user
29+
}

0 commit comments

Comments
 (0)