| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- const mongoose = require('../infrastructure/Mongoose')
- const { Schema } = mongoose
- const MIN_NAME_LENGTH = 3
- const MAX_NAME_LENGTH = 200
- const NAME_REGEX = /^[a-z0-9-]+$/
- const SurveySchema = new Schema(
- {
- name: {
- type: String,
- minLength: MIN_NAME_LENGTH,
- maxlength: MAX_NAME_LENGTH,
- required: true,
- validate: {
- validator: function (input) {
- return input !== null && NAME_REGEX.test(input)
- },
- message: `invalid, must match: ${NAME_REGEX}`,
- },
- },
- title: {
- type: String,
- required: true,
- },
- text: {
- type: String,
- required: true,
- },
- cta: {
- type: String,
- required: false,
- },
- url: {
- type: String,
- required: true,
- },
- options: {
- hasRecurlyGroupSubscription: {
- type: Boolean,
- default: false,
- },
- earliestSignupDate: {
- type: Date,
- },
- latestSignupDate: {
- type: Date,
- },
- rolloutPercentage: {
- type: Number,
- default: 100,
- },
- excludeLabsUsers: {
- type: Boolean,
- default: false,
- },
- },
- },
- {
- collection: 'surveys',
- minimize: false,
- }
- )
- module.exports = {
- Survey: mongoose.model('Survey', SurveySchema),
- SurveySchema,
- }
|