41 lines
950 B
TypeScript
41 lines
950 B
TypeScript
import { requireAuth } from '~/server/utils/auth'
|
|
import { prisma } from '~/server/utils/prisma'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const currentUser = requireAuth(event)
|
|
const targetIdOrUsername = getRouterParam(event, 'id')
|
|
|
|
const targetUser = await prisma.user.findFirst({
|
|
where: {
|
|
OR: [
|
|
{ id: targetIdOrUsername },
|
|
{ username: targetIdOrUsername }
|
|
]
|
|
}
|
|
})
|
|
|
|
if (!targetUser) {
|
|
throw createError({ statusCode: 404, message: 'User not found' })
|
|
}
|
|
|
|
if (targetUser.id === currentUser.id) {
|
|
throw createError({ statusCode: 400, message: 'You cannot follow yourself' })
|
|
}
|
|
|
|
await prisma.follows.upsert({
|
|
where: {
|
|
followerId_followingId: {
|
|
followerId: currentUser.id,
|
|
followingId: targetUser.id
|
|
}
|
|
},
|
|
update: {},
|
|
create: {
|
|
followerId: currentUser.id,
|
|
followingId: targetUser.id
|
|
}
|
|
})
|
|
|
|
return { success: true }
|
|
})
|