TgRouting/deamon/userService.js

37 lines
1.0 KiB
JavaScript

// userService.js
export async function getOrCreateUserAndGroups(prisma, fromInfo) {
const platform = 'telegram'
const originalPlatformId = fromInfo.id.toString()
const username = fromInfo.username || ''
// 1. Пытаемся найти пользователя по уникальному ключу (originalPlatformId + platform)
let user = await prisma.user.findUnique({
where: {
platform_originalPlatformId: { platform, originalPlatformId }
},
include: { groups: true } // <-- many-to-many!
})
// 2. Если не найден — создаём
if (!user) {
user = await prisma.user.create({
data: {
username,
platform,
originalPlatformId
},
include: { groups: true }
})
}
// 3. Получаем id пользователя
const userId = user.id
// 4. Массив групп пользователя
const groups = user.groups ?? []
// 5. Возвращаем user, userId, groups
return { user, userId, groups }
}