import { Sequelize } from 'sequelize'; import SubscriberModel from './subscriber.js'; import MailingGroupModel from './mailingGroup.js'; import GroupSubscriberModel from './groupSubscriber.js'; import EmailTemplateModel from './emailTemplate.js'; import EmailTemplateVersionModel from './emailTemplateVersion.js'; import CampaignModel from './campaign.js'; import DeliveryLogModel from './deliveryLog.js'; import SmtpServerModel from './smtpServer.js'; const sequelize = new Sequelize( process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, { host: process.env.DB_HOST, port: process.env.DB_PORT, dialect: 'mysql', logging: false, } ); const Subscriber = SubscriberModel(sequelize); const MailingGroup = MailingGroupModel(sequelize); const GroupSubscriber = GroupSubscriberModel(sequelize); const EmailTemplate = EmailTemplateModel(sequelize); const EmailTemplateVersion = EmailTemplateVersionModel(sequelize); const Campaign = CampaignModel(sequelize); const DeliveryLog = DeliveryLogModel(sequelize); const SmtpServer = SmtpServerModel(sequelize); // Связи MailingGroup.belongsToMany(Subscriber, { through: GroupSubscriber, foreignKey: 'group_id', otherKey: 'subscriber_id' }); Subscriber.belongsToMany(MailingGroup, { through: GroupSubscriber, foreignKey: 'subscriber_id', otherKey: 'group_id' }); GroupSubscriber.belongsTo(MailingGroup, { foreignKey: 'group_id' }); GroupSubscriber.belongsTo(Subscriber, { foreignKey: 'subscriber_id' }); EmailTemplate.hasMany(EmailTemplateVersion, { foreignKey: 'template_id' }); EmailTemplateVersion.belongsTo(EmailTemplate, { foreignKey: 'template_id' }); Campaign.belongsTo(EmailTemplateVersion, { foreignKey: 'template_version_id' }); Campaign.belongsTo(MailingGroup, { foreignKey: 'group_id' }); DeliveryLog.belongsTo(Campaign, { foreignKey: 'campaign_id' }); DeliveryLog.belongsTo(Subscriber, { foreignKey: 'subscriber_id' }); // Удалены связи SmtpServer <-> MailingGroup по group_id // (связи с user_id только по полю, без внешнего ключа на User) export { sequelize, Subscriber, MailingGroup, GroupSubscriber, EmailTemplate, EmailTemplateVersion, Campaign, DeliveryLog, SmtpServer, };