format & rewrite

This commit is contained in:
SrGooglo 2025-04-10 14:33:36 +00:00
parent 525aa9c066
commit ec8d0a068d
5 changed files with 131 additions and 153 deletions

View File

@ -1,6 +1,5 @@
import { User, UserFollow } from "@db_models"
// REWRITE MEE!!!
export default async (payload = {}) => {
const { user_id, from_user_id, basic } = payload
@ -8,64 +7,45 @@ export default async (payload = {}) => {
throw new OperationError(400, "Missing user_id")
}
let data = null
const isMultipleUsers = Array.isArray(user_id)
if (Array.isArray(user_id)) {
data = await User.find({
_id: {
$in: user_id,
},
}).catch((err) => {
return false
})
let usersData = null
data = data.map((user) => {
user = user.toObject()
return user
})
if (isMultipleUsers) {
usersData = await User.find({ _id: { $in: user_id } })
if (from_user_id && !basic) {
const following = await UserFollow.find({
to: {
$in: ids,
},
user_id: from_user_id,
}).catch(() => false)
following.forEach((follow) => {
const userIndex = data.findIndex((user) => {
return user._id === follow.to
})
if (userIndex > -1) {
data[userIndex].following = true
}
})
if (!usersData || !usersData.length) {
return []
}
return data
usersData = usersData.map((user) => user.toObject())
} else {
data = await User.findOne({
_id: user_id,
}).catch((err) => {
return false
})
const userData = await User.findOne({ _id: user_id })
if (!data) {
if (!userData) {
throw new OperationError(404, "User not found")
}
data = data.toObject()
usersData = [userData.toObject()]
}
if (from_user_id && !basic) {
const isFollowed = await UserFollow.findOne({
const targetUserIds = usersData.map((user) => user._id)
const followingData = await UserFollow.find({
user_id: from_user_id,
to: user_id,
}).catch(() => false)
to: { $in: targetUserIds },
})
data.following = !!isFollowed
const followedUserIds = new Set(
followingData.map((follow) => follow.to.toString()),
)
usersData = usersData.map((user) => ({
...user,
following: followedUserIds.has(user._id.toString()),
}))
}
return data
}
return isMultipleUsers ? usersData : usersData[0]
}

View File

@ -9,7 +9,7 @@ export default async (payload = {}) => {
if (data) {
let followers = await UserFollow.find({
to: user_id
to: user_id,
})
.limit(limit)
.skip(offset)
@ -18,18 +18,18 @@ export default async (payload = {}) => {
_id: {
$in: followers.map((follow) => {
return follow.user_id
})
}
}),
},
})
return followersData
} else {
const count = await UserFollow.countDocuments({
to: user_id
to: user_id,
})
return {
count
count,
}
}
}

View File

@ -8,7 +8,7 @@ export default async (payload = {}) => {
}
let user = await User.findOne({
username
username,
}).catch((err) => {
return false
})
@ -18,6 +18,6 @@ export default async (payload = {}) => {
}
return {
user_id: user._id.toString()
user_id: user._id.toString(),
}
}

View File

@ -25,7 +25,5 @@ export default async (user_id, update) => {
user = user.toObject()
//global.websocket.io.of("/").emit(`user.update.${update}`, user)
return user
}