// 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 } }