Survey.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. rolloutPercentage: {
  38. type: Number,
  39. default: 100,
  40. },
  41. },
  42. },
  43. {
  44. collection: 'surveys',
  45. minimize: false,
  46. }
  47. )
  48. module.exports = {
  49. Survey: mongoose.model('Survey', SurveySchema),
  50. SurveySchema,
  51. }