61 lines
2.2 KiB
JavaScript
61 lines
2.2 KiB
JavaScript
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,
|
||
};
|