/
TimurIsm
/
OpenEyes
Обзор
Документация
Войти
/
TimurIsm
/
OpenEyes
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
back/models/models.js
91 строка
4 KB
TimurIsm
first_commit
16 май 2026, 15:34
16 май 2026, 15:34
4d3f198
Код
Авторство
О чём код?
const sequelize = require('../db'); const { DataTypes } = require('sequelize'); const User = sequelize.define('user', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, email: { type: DataTypes.STRING, unique: true }, password: { type: DataTypes.STRING }, role: { type: DataTypes.STRING, defaultValue: "USER" }, isVerified: { type: DataTypes.BOOLEAN, defaultValue: false }, tokens: { type: DataTypes.JSONB, defaultValue: {}, allowNull: false }, }); const Articles = sequelize.define('articles', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, title: { type: DataTypes.STRING, allowNull: false }, description: { type: DataTypes.STRING, allowNull: false }, content: { type: DataTypes.TEXT, allowNull: false }, adminId: { type: DataTypes.INTEGER, allowNull: false }, }); const Question = sequelize.define('question', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, text: { type: DataTypes.STRING, allowNull: false }, type: { type: DataTypes.ENUM('single', 'multiple', 'custom'), allowNull: false }, adminId: { type: DataTypes.INTEGER, allowNull: false }, }); const Answer = sequelize.define('answer', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, text: { type: DataTypes.STRING, allowNull: false }, questionId: { type: DataTypes.INTEGER, allowNull: false }, }); const VisionTest = sequelize.define('vision_test', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, type: { type: DataTypes.STRING, allowNull: false }, short_description: { type: DataTypes.STRING, allowNull: false }, full_description: { type: DataTypes.TEXT, allowNull: false }, main_image: {type: DataTypes.STRING, allowNull: false }, results: { type: DataTypes.TEXT, defaultValue: '[]', allowNull: false }, adminId: { type: DataTypes.INTEGER, allowNull: false }, }); const TestQuestion = sequelize.define('test_question', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, data_type: { type: DataTypes.STRING, allowNull: false }, content: { type: DataTypes.TEXT, allowNull: false }, correct_answer: { type: DataTypes.STRING, allowNull: false }, answer_options: {type: DataTypes.TEXT, defaultValue: '[]', allowNull: true}, testId: { type: DataTypes.INTEGER, allowNull: false }, }); const UserTestResult = sequelize.define('user_test_result', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, userId: { type: DataTypes.INTEGER, allowNull: false }, testId: { type: DataTypes.INTEGER, allowNull: true }, title: { type: DataTypes.STRING, allowNull: false }, userAnswers: { type: DataTypes.TEXT, allowNull: false }, result: { type: DataTypes.TEXT, allowNull: false }, }); Question.hasMany(Answer, { foreignKey: 'questionId', as: 'answers' }); Answer.belongsTo(Question, { foreignKey: 'questionId', as: 'question' }); VisionTest.hasMany(TestQuestion, { foreignKey: 'testId', as: 'questions' }); TestQuestion.belongsTo(VisionTest, { foreignKey: 'testId', as: 'test' }); User.hasMany(Articles, { foreignKey: 'adminId', as: 'adminArticles' }); Articles.belongsTo(User, { foreignKey: 'adminId', as: 'admin' }); User.hasMany(Question, { foreignKey: 'adminId', as: 'createdQuestions' }); Question.belongsTo(User, { foreignKey: 'adminId', as: 'admin' }); User.hasMany(VisionTest, { foreignKey: 'adminId', as: 'createdTests' }); VisionTest.belongsTo(User, { foreignKey: 'adminId', as: 'admin' }); User.hasMany(UserTestResult, { foreignKey: 'userId', as: 'testResults' }); UserTestResult.belongsTo(User, { foreignKey: 'userId', as: 'user' }); VisionTest.hasMany(UserTestResult, { foreignKey: 'testId', as: 'userResults' }); UserTestResult.belongsTo(VisionTest, { foreignKey: 'testId', as: 'test' }); module.exports = { User, Articles, Question, Answer, VisionTest, TestQuestion, UserTestResult };