Survey.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const mongoose = require('../infrastructure/Mongoose')
  2. const { Schema } = mongoose
  3. const MIN_NAME_LENGTH = 3
  4. const MAX_NAME_LENGTH = 200
  5. const NAME_REGEX = /^[a-z0-9-]+$/
  6. const SurveySchema = new Schema(
  7. {
  8. name: {
  9. type: String,
  10. minLength: MIN_NAME_LENGTH,
  11. maxlength: MAX_NAME_LENGTH,
  12. required: true,
  13. validate: {
  14. validator: function (input) {
  15. return input !== null && NAME_REGEX.test(input)
  16. },
  17. message: `invalid, must match: ${NAME_REGEX}`,
  18. },
  19. },
  20. preText: {
  21. type: String,
  22. required: true,
  23. },
  24. linkText: {
  25. type: String,
  26. required: true,
  27. },
  28. url: {
  29. type: String,
  30. required: true,
  31. },
  32. options: {
  33. hasRecurlyGroupSubscription: {
  34. type: Boolean,
  35. default: false,
  36. },
  37. earliestSignupDate: {
  38. type: Date,
  39. },
  40. latestSignupDate: {
  41. type: Date,
  42. },
  43. rolloutPercentage: {
  44. type: Number,
  45. default: 100,
  46. },
  47. },
  48. },
  49. {
  50. collection: 'surveys',
  51. minimize: false,
  52. }
  53. )
  54. module.exports = {
  55. Survey: mongoose.model('Survey', SurveySchema),
  56. SurveySchema,
  57. }