user.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import mongoose from "mongoose";
  2. export default {
  3. username: { type: String, required: true },
  4. role: { type: String, default: "default", required: true },
  5. email: {
  6. verified: { type: Boolean, default: false, required: true },
  7. verificationToken: String,
  8. address: String
  9. },
  10. avatar: {
  11. type: { type: String, enum: ["gravatar", "initials"], required: true },
  12. url: { type: String, required: false }
  13. },
  14. services: {
  15. password: {
  16. password: String,
  17. reset: {
  18. code: { type: String, min: 8, max: 8 },
  19. expires: { type: Date }
  20. },
  21. set: {
  22. code: { type: String, min: 8, max: 8 },
  23. expires: { type: Date }
  24. }
  25. },
  26. github: {
  27. id: Number,
  28. access_token: String
  29. }
  30. },
  31. statistics: {
  32. songsRequested: { type: Number, default: 0, required: true }
  33. },
  34. likedSongsPlaylist: { type: mongoose.Schema.Types.ObjectId },
  35. dislikedSongsPlaylist: { type: mongoose.Schema.Types.ObjectId },
  36. favoriteStations: [{ type: String }],
  37. name: { type: String, default: "" },
  38. location: { type: String, default: "" },
  39. bio: { type: String, default: "" },
  40. createdAt: { type: Date, default: Date.now },
  41. preferences: {
  42. orderOfPlaylists: [{ type: mongoose.Schema.Types.ObjectId }],
  43. nightmode: { type: Boolean, default: false, required: true },
  44. autoSkipDisliked: { type: Boolean, default: true, required: true }
  45. }
  46. };