/
leflop
/
queue_system_backend
Обзор
Документация
Войти
/
leflop
/
queue_system_backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
models/index.js
84 строки
3 KB
leflop
Initial commit. Auth endpoints finished, some queue management endpoints also done.
03 авг 2025, 13:39
03 авг 2025, 13:39
afbd732
Код
Авторство
О чём код?
require('dotenv').config(); const Sequelize = require('sequelize'); const sequelize = new Sequelize('queue_manager', 'postgres', '@Asd1024', { host: 'localhost', dialect: 'postgres', logging: process.env.NODE_ENV === 'development' ? console.log : false, pool: { max: 20, min: 0, acquire: 30000, idle: 10000 }, }); const User = require('./user')(sequelize); const Group = require('./group')(sequelize); const Subject = require('./subject')(sequelize); const Queue = require('./queue')(sequelize); const QueueParticipant = require('./queueParticipant')(sequelize); const SwapRequest = require('./swapRequest')(sequelize); const Notification = require('./notification')(sequelize); User.belongsTo(Group, { foreignKey: { name: 'group_id', allowNull: false }, as: 'group' }); Group.hasMany(User, { foreignKey: 'group_id', as: 'users' }); Queue.belongsTo(Group, { foreignKey: { name: 'group_id', allowNull: false }, as: 'group' }); Group.hasMany(Queue, { foreignKey: 'group_id', as: 'queues' }); Queue.belongsTo(Subject, { foreignKey: { name: 'subject_id', allowNull: false }, as: 'subject' }); Subject.hasMany(Queue, { foreignKey: 'subject_id', as: 'queues' }); Subject.belongsTo(Group, { foreignKey: { name: 'group_id', allowNull: false }, as: 'group' }); Group.hasMany(Subject, { foreignKey: 'group_id', as: 'subjects' }); User.belongsToMany(Queue, { through: QueueParticipant, foreignKey: 'user_id', otherKey: 'queue_id', as: 'queues' }); Queue.belongsToMany(User, { through: QueueParticipant, foreignKey: 'queue_id', otherKey: 'user_id', as: 'participants' }); QueueParticipant.belongsTo(User, { foreignKey: 'user_id', as: 'user' }); QueueParticipant.belongsTo(Queue, { foreignKey: 'queue_id', as: 'queue' }); SwapRequest.belongsTo(Queue, { foreignKey: { name: 'queue_id', allowNull: false }, as: 'queue' }); SwapRequest.belongsTo(User, { foreignKey: { name: 'sender_id', allowNull: false }, as: 'sender' }); SwapRequest.belongsTo(User, { foreignKey: { name: 'receiver_id', allowNull: false }, as: 'receiver' }); Queue.hasMany(SwapRequest, { foreignKey: 'queue_id', as: 'requests' }); User.hasMany(SwapRequest, { foreignKey: 'sender_id', as: 'sent_requests' }); User.hasMany(SwapRequest, { foreignKey: 'receiver_id', as: 'received_requests' }); Notification.belongsTo(User, { foreignKey: { name: 'user_id', allowNull: false }, as: 'user' }); User.hasMany(Notification, { foreignKey: 'user_id', as: 'notifications' }); async function initializeDatabase() { try { await sequelize.authenticate(); console.log('PostgresSQL connection established'); await sequelize.sync({ force: process.env.NODE_ENV === 'development' && process.env.RESET_DB === 'true', alter: process.env.NODE_ENV === 'development' }); console.log('Database synchronized successfully'); } catch (err) { console.error(err); } } module.exports = { sequelize, User, Group, Subject, Queue, QueueParticipant, SwapRequest, Notification, initializeDatabase };