preferences.service.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.getPreferences = getPreferences;
  4. exports.updatePreferences = updatePreferences;
  5. const client_1 = require("@prisma/client");
  6. const prisma = new client_1.PrismaClient();
  7. /**
  8. * 获取用户偏好设置
  9. */
  10. async function getPreferences(userId) {
  11. const userIdNum = parseInt(userId);
  12. // 使用 upsert 语义,避免外键约束问题
  13. const preferences = await prisma.userPreference.upsert({
  14. where: { userId: userIdNum },
  15. update: {},
  16. create: {
  17. userId: userIdNum,
  18. playSpeed: 1.0,
  19. quality: 'standard',
  20. theme: 'light',
  21. },
  22. });
  23. return preferences;
  24. }
  25. /**
  26. * 更新用户偏好设置
  27. */
  28. async function updatePreferences(userId, data) {
  29. const userIdNum = parseInt(userId);
  30. // 使用 upsert 语义
  31. const existing = await prisma.userPreference.findUnique({
  32. where: { userId: userIdNum },
  33. });
  34. if (existing) {
  35. // 更新
  36. return await prisma.userPreference.update({
  37. where: { userId: userIdNum },
  38. data,
  39. });
  40. }
  41. else {
  42. // 创建
  43. return await prisma.userPreference.create({
  44. data: {
  45. userId: userIdNum,
  46. playSpeed: data.playSpeed ?? 1.0,
  47. quality: data.quality ?? 'standard',
  48. theme: data.theme ?? 'light',
  49. },
  50. });
  51. }
  52. }