mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
format & rewrite
This commit is contained in:
parent
525aa9c066
commit
ec8d0a068d
@ -1,6 +1,5 @@
|
|||||||
import { User, UserFollow } from "@db_models"
|
import { User, UserFollow } from "@db_models"
|
||||||
|
|
||||||
// REWRITE MEE!!!
|
|
||||||
export default async (payload = {}) => {
|
export default async (payload = {}) => {
|
||||||
const { user_id, from_user_id, basic } = payload
|
const { user_id, from_user_id, basic } = payload
|
||||||
|
|
||||||
@ -8,64 +7,45 @@ export default async (payload = {}) => {
|
|||||||
throw new OperationError(400, "Missing user_id")
|
throw new OperationError(400, "Missing user_id")
|
||||||
}
|
}
|
||||||
|
|
||||||
let data = null
|
const isMultipleUsers = Array.isArray(user_id)
|
||||||
|
|
||||||
if (Array.isArray(user_id)) {
|
let usersData = null
|
||||||
data = await User.find({
|
|
||||||
_id: {
|
|
||||||
$in: user_id,
|
|
||||||
},
|
|
||||||
}).catch((err) => {
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
|
|
||||||
data = data.map((user) => {
|
if (isMultipleUsers) {
|
||||||
user = user.toObject()
|
usersData = await User.find({ _id: { $in: user_id } })
|
||||||
return user
|
|
||||||
})
|
|
||||||
|
|
||||||
if (from_user_id && !basic) {
|
if (!usersData || !usersData.length) {
|
||||||
const following = await UserFollow.find({
|
return []
|
||||||
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
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return data
|
usersData = usersData.map((user) => user.toObject())
|
||||||
} else {
|
} else {
|
||||||
data = await User.findOne({
|
const userData = await User.findOne({ _id: user_id })
|
||||||
_id: user_id,
|
|
||||||
}).catch((err) => {
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!data) {
|
if (!userData) {
|
||||||
throw new OperationError(404, "User not found")
|
throw new OperationError(404, "User not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
data = data.toObject()
|
usersData = [userData.toObject()]
|
||||||
|
|
||||||
if (from_user_id && !basic) {
|
|
||||||
const isFollowed = await UserFollow.findOne({
|
|
||||||
user_id: from_user_id,
|
|
||||||
to: user_id,
|
|
||||||
}).catch(() => false)
|
|
||||||
|
|
||||||
data.following = !!isFollowed
|
|
||||||
}
|
|
||||||
|
|
||||||
return data
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (from_user_id && !basic) {
|
||||||
|
const targetUserIds = usersData.map((user) => user._id)
|
||||||
|
|
||||||
|
const followingData = await UserFollow.find({
|
||||||
|
user_id: from_user_id,
|
||||||
|
to: { $in: targetUserIds },
|
||||||
|
})
|
||||||
|
|
||||||
|
const followedUserIds = new Set(
|
||||||
|
followingData.map((follow) => follow.to.toString()),
|
||||||
|
)
|
||||||
|
|
||||||
|
usersData = usersData.map((user) => ({
|
||||||
|
...user,
|
||||||
|
following: followedUserIds.has(user._id.toString()),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
return isMultipleUsers ? usersData : usersData[0]
|
||||||
}
|
}
|
||||||
|
@ -1,35 +1,35 @@
|
|||||||
import { User, UserFollow } from "@db_models"
|
import { User, UserFollow } from "@db_models"
|
||||||
|
|
||||||
export default async (payload = {}) => {
|
export default async (payload = {}) => {
|
||||||
const { user_id, data = false, limit = 50, offset = 0 } = payload
|
const { user_id, data = false, limit = 50, offset = 0 } = payload
|
||||||
|
|
||||||
if (!user_id) {
|
if (!user_id) {
|
||||||
throw new OperationError(400, "Missing user_id")
|
throw new OperationError(400, "Missing user_id")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
let followers = await UserFollow.find({
|
let followers = await UserFollow.find({
|
||||||
to: user_id
|
to: user_id,
|
||||||
})
|
})
|
||||||
.limit(limit)
|
.limit(limit)
|
||||||
.skip(offset)
|
.skip(offset)
|
||||||
|
|
||||||
const followersData = await User.find({
|
const followersData = await User.find({
|
||||||
_id: {
|
_id: {
|
||||||
$in: followers.map((follow) => {
|
$in: followers.map((follow) => {
|
||||||
return follow.user_id
|
return follow.user_id
|
||||||
})
|
}),
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
return followersData
|
return followersData
|
||||||
} else {
|
} else {
|
||||||
const count = await UserFollow.countDocuments({
|
const count = await UserFollow.countDocuments({
|
||||||
to: user_id
|
to: user_id,
|
||||||
})
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
count
|
count,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
import { User } from "@db_models"
|
import { User } from "@db_models"
|
||||||
|
|
||||||
export default async (payload = {}) => {
|
export default async (payload = {}) => {
|
||||||
const { username } = payload
|
const { username } = payload
|
||||||
|
|
||||||
if (!username) {
|
if (!username) {
|
||||||
throw new OperationError(400, "Missing username")
|
throw new OperationError(400, "Missing username")
|
||||||
}
|
}
|
||||||
|
|
||||||
let user = await User.findOne({
|
let user = await User.findOne({
|
||||||
username
|
username,
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
throw new OperationError(404, "User not found")
|
throw new OperationError(404, "User not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
user_id: user._id.toString()
|
user_id: user._id.toString(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,51 +1,51 @@
|
|||||||
import { User, UserFollow } from "@db_models"
|
import { User, UserFollow } from "@db_models"
|
||||||
|
|
||||||
export default async (payload = {}) => {
|
export default async (payload = {}) => {
|
||||||
let { user_id, from_user_id, to } = payload
|
let { user_id, from_user_id, to } = payload
|
||||||
|
|
||||||
if (typeof from_user_id === "undefined") {
|
if (typeof from_user_id === "undefined") {
|
||||||
throw new OperationError(400, "[from_user_id] not provided")
|
throw new OperationError(400, "[from_user_id] not provided")
|
||||||
}
|
}
|
||||||
if (typeof user_id === "undefined") {
|
if (typeof user_id === "undefined") {
|
||||||
throw new OperationError(400, "[user_id] not provided")
|
throw new OperationError(400, "[user_id] not provided")
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = await User.findById(user_id).catch((err) => {
|
const user = await User.findById(user_id).catch((err) => {
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
throw new OperationError(404, "User not found")
|
throw new OperationError(404, "User not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
let followObj = await UserFollow.findOne({
|
let followObj = await UserFollow.findOne({
|
||||||
user_id: from_user_id,
|
user_id: from_user_id,
|
||||||
to: user_id,
|
to: user_id,
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
if (typeof to === "undefined") {
|
if (typeof to === "undefined") {
|
||||||
if (followObj) {
|
if (followObj) {
|
||||||
to = false
|
to = false
|
||||||
} else {
|
} else {
|
||||||
to = true
|
to = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (to === true) {
|
if (to === true) {
|
||||||
followObj = new UserFollow({
|
followObj = new UserFollow({
|
||||||
user_id: from_user_id,
|
user_id: from_user_id,
|
||||||
to: user_id,
|
to: user_id,
|
||||||
})
|
})
|
||||||
|
|
||||||
await followObj.save()
|
await followObj.save()
|
||||||
} else {
|
} else {
|
||||||
await UserFollow.findByIdAndDelete(followObj._id)
|
await UserFollow.findByIdAndDelete(followObj._id)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
following: to,
|
following: to,
|
||||||
count: await UserFollow.countDocuments({ to: user_id }),
|
count: await UserFollow.countDocuments({ to: user_id }),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,31 +1,29 @@
|
|||||||
import { User } from "@db_models"
|
import { User } from "@db_models"
|
||||||
|
|
||||||
export default async (user_id, update) => {
|
export default async (user_id, update) => {
|
||||||
if (typeof user_id === "undefined") {
|
if (typeof user_id === "undefined") {
|
||||||
throw new Error("No user_id provided")
|
throw new Error("No user_id provided")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof update === "undefined") {
|
if (typeof update === "undefined") {
|
||||||
throw new Error("No update provided")
|
throw new Error("No update provided")
|
||||||
}
|
}
|
||||||
|
|
||||||
let user = await User.findById(user_id)
|
let user = await User.findById(user_id)
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
throw new OperationError(404, "User not found")
|
throw new OperationError(404, "User not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
const updateKeys = Object.keys(update)
|
const updateKeys = Object.keys(update)
|
||||||
|
|
||||||
updateKeys.forEach((key) => {
|
updateKeys.forEach((key) => {
|
||||||
user[key] = update[key]
|
user[key] = update[key]
|
||||||
})
|
})
|
||||||
|
|
||||||
await user.save()
|
await user.save()
|
||||||
|
|
||||||
user = user.toObject()
|
user = user.toObject()
|
||||||
|
|
||||||
//global.websocket.io.of("/").emit(`user.update.${update}`, user)
|
return user
|
||||||
|
}
|
||||||
return user
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user