const mongoose = require('mongoose'); // Типы вопросов const QUESTION_TYPES = { SINGLE_CHOICE: 'single_choice', // Один вариант MULTIPLE_CHOICE: 'multiple_choice', // Несколько вариантов TEXT: 'text', // Текстовый ответ RATING: 'rating', // Оценка по шкале TAG_CLOUD: 'tag_cloud' // Облако тегов }; // Типы отображения const DISPLAY_TYPES = { DEFAULT: 'default', TAG_CLOUD: 'tag_cloud', VOTING: 'voting', POLL: 'poll' }; // Схема варианта ответа const optionSchema = new mongoose.Schema({ text: { type: String, required: true }, count: { type: Number, default: 0 } // счетчик голосов }); // Схема вопроса const questionSchema = new mongoose.Schema({ text: { type: String, required: true }, type: { type: String, enum: Object.values(QUESTION_TYPES), required: true }, options: [optionSchema], required: { type: Boolean, default: false } }); // Схема опроса const questionnaireSchema = new mongoose.Schema({ title: { type: String, required: true }, description: { type: String }, questions: [questionSchema], displayType: { type: String, enum: Object.values(DISPLAY_TYPES), default: DISPLAY_TYPES.DEFAULT }, createdAt: { type: Date, default: Date.now }, updatedAt: { type: Date, default: Date.now }, adminLink: { type: String, required: true }, // ссылка для редактирования publicLink: { type: String, required: true } // ссылка для голосования }); const Questionnaire = mongoose.model('Questionnaire', questionnaireSchema); module.exports = { Questionnaire, QUESTION_TYPES, DISPLAY_TYPES };