ads-marketing/mail-service/src/models/index.js
romantarkin bee42c5b16 CRUD
2025-07-23 13:57:53 +05:00

61 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
};