Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); /** * 获取用户偏好设置 */ export async function getPreferences(userId: string) { const userIdNum = parseInt(userId); // 使用 upsert 语义,避免外键约束问题 const preferences = await prisma.userPreference.upsert({ where: { userId: userIdNum }, update: {}, create: { userId: userIdNum, playSpeed: 1.0, quality: 'standard', theme: 'light', defaultVoiceId: 'cherry', defaultVolume: 50, autoPlayNext: true, wifiOnlyDownload: false, }, }); return preferences; } /** * 更新用户偏好设置 */ export async function updatePreferences( userId: string, data: { playSpeed?: number; quality?: string; theme?: string; defaultVoiceId?: string; defaultVolume?: number; autoPlayNext?: boolean; wifiOnlyDownload?: boolean; } ) { const userIdNum = parseInt(userId); // 使用 upsert 语义 const existing = await prisma.userPreference.findUnique({ where: { userId: userIdNum }, }); if (existing) { // 更新 return await prisma.userPreference.update({ where: { userId: userIdNum }, data, }); } else { // 创建 return await prisma.userPreference.create({ data: { userId: userIdNum, playSpeed: data.playSpeed ?? 1.0, quality: data.quality ?? 'standard', theme: data.theme ?? 'light', defaultVoiceId: data.defaultVoiceId ?? 'cherry', defaultVolume: data.defaultVolume ?? 50, autoPlayNext: data.autoPlayNext ?? true, wifiOnlyDownload: data.wifiOnlyDownload ?? false, }, }); } } |