UNPKG

@speakr/speakr-module-services

Version:
213 lines (191 loc) • 11.9 kB
'use strict'; const db = {}; const env = require('../env'); const Sequelize = require('sequelize'); const modelsRoute = '../models/'; let sequelize; sequelize = new Sequelize(env.DATABASE_NAME, env.DATABASE_USERNAME, env.DATABASE_PASSWORD, { host: env.DATABASE_HOST, port: env.DATABASE_PORT, dialect: env.DATABASE_DIALECT, dialectOptions: __dirname + `../config/speakr-internal-devs.pem`, define: { underscored: true } }); db.sequelize = sequelize; db.Sequelize = Sequelize; // MODELS INDEX db.users = require(modelsRoute + 'users.js')(sequelize, Sequelize); db.roles = require(modelsRoute + 'roles.js')(sequelize, Sequelize); db.users_roles = require(modelsRoute + 'users_roles.js')(sequelize, Sequelize); db.answers = require(modelsRoute + 'answers.js')(sequelize, Sequelize); db.tones = require(modelsRoute + 'tones.js')(sequelize, Sequelize); db.brands = require(modelsRoute + 'brands.js')(sequelize, Sequelize); db.groups = require(modelsRoute + 'groups.js')(sequelize, Sequelize); db.tokens = require(modelsRoute + 'tokens.js')(sequelize, Sequelize); db.devices = require(modelsRoute + 'devices.js')(sequelize, Sequelize); db.invites = require(modelsRoute + 'invites.js')(sequelize, Sequelize); db.metrics = require(modelsRoute + 'metrics.js')(sequelize, Sequelize); db.optouts = require(modelsRoute + 'optouts.js')(sequelize, Sequelize); db.networks = require(modelsRoute + 'networks.js')(sequelize, Sequelize); db.agencies = require(modelsRoute + 'agencies.js')(sequelize, Sequelize); db.mandrill = require(modelsRoute + 'mandrill.js')(sequelize, Sequelize); db.statuses = require(modelsRoute + 'statuses.js')(sequelize, Sequelize); db.contacts = require(modelsRoute + 'contacts.js')(sequelize, Sequelize); db.platforms = require(modelsRoute + 'platforms.js')(sequelize, Sequelize); db.ethnicities = require(modelsRoute + 'ethnicities.js')(sequelize, Sequelize); db.initiatives = require(modelsRoute + 'initiatives.js')(sequelize, Sequelize); db.influencers = require(modelsRoute + 'influencers.js')(sequelize, Sequelize); db.influencers_networks = require(modelsRoute + 'influencers_networks.js')(sequelize, Sequelize); db.influencers_sessions = require(modelsRoute + 'influencers_sessions.js')(sequelize, Sequelize); db.notifications = require(modelsRoute + 'notifications.js')(sequelize, Sequelize); db.creatives = require(modelsRoute + 'creatives.js')(sequelize, Sequelize); db.scheduled_creatives = require(modelsRoute + 'scheduled_creatives.js')(sequelize, Sequelize); db.creatives_statuses = require(modelsRoute + 'creatives_statuses.js')(sequelize, Sequelize); db.creatives_status_types = require(modelsRoute + 'creatives_status_types.js')(sequelize, Sequelize); db.creatives_notes = require(modelsRoute + 'creatives_notes.js')(sequelize, Sequelize); db.products = require(modelsRoute + 'products.js')(sequelize, Sequelize); db.profanities = require(modelsRoute + 'profanities.js')(sequelize, Sequelize); db.payments = require(modelsRoute + 'payments.js')(sequelize, Sequelize); db.invoices = require(modelsRoute + 'invoices.js')(sequelize, Sequelize); db.line_items = require(modelsRoute + 'line_items.js')(sequelize, Sequelize); db.influencer_profiles = require(modelsRoute + 'influencer_profiles.js')(sequelize, Sequelize); db.accounts = require(modelsRoute + 'accounts.js')(sequelize, Sequelize); db.accounts_categories = require(modelsRoute + 'accounts_categories.js')(sequelize, Sequelize); db.accounts_networks = require(modelsRoute + 'accounts_networks.js')(sequelize, Sequelize); db.accounts_stats = require(modelsRoute + 'accounts_stats.js')(sequelize, Sequelize); db.accounts_carts = require(modelsRoute + 'accounts_carts.js')(sequelize, Sequelize); db.accounts_historics = require(modelsRoute + 'accounts_historics.js')(sequelize, Sequelize); db.account_imports = require(modelsRoute + 'account_imports.js')(sequelize, Sequelize); db.accounts_offer_prices = require(modelsRoute + 'accounts_offer_prices.js')(sequelize, Sequelize); db.reports = require(modelsRoute + 'reports.js')(sequelize, Sequelize); db.reports_callouts = require(modelsRoute + 'reports_callouts.js')(sequelize, Sequelize); db.reports_creatives = require(modelsRoute + 'reports_creatives.js')(sequelize, Sequelize); db.reports_periscopes = require(modelsRoute + 'reports_periscopes.js')(sequelize, Sequelize); db.reports_impressions = require(modelsRoute + 'reports_impressions.js')(sequelize, Sequelize); db.reports_engagements = require(modelsRoute + 'reports_engagements.js')(sequelize, Sequelize); db.campaign_reports_custom = require(modelsRoute + 'campaign_reports_custom.js')(sequelize, Sequelize); db.campaigns = require(modelsRoute + 'campaigns.js')(sequelize, Sequelize); db.campaign_profiles = require(modelsRoute + 'campaign_profiles.js')(sequelize, Sequelize); db.approval_requirements = require(modelsRoute + 'approval_requirements.js')(sequelize, Sequelize); db.content_categories = require(modelsRoute + 'content_categories.js')(sequelize, Sequelize); db.content_tones = require(modelsRoute + 'content_tones.js')(sequelize, Sequelize); db.paypal_ipn = require(modelsRoute + 'paypal_ipn.js')(sequelize, Sequelize); db.tracking_stats = require(modelsRoute + 'tracking_stats.js')(sequelize, Sequelize); db.point_of_contacts = require(modelsRoute + 'point_of_contacts.js')(sequelize, Sequelize); // RELATIONSHIPS INDEX db.users.hasMany(db.roles); db.users.belongsTo(db.networks); // HAS ONE db.accounts.hasOne(db.metrics); //db.accounts.hasOne(db.accounts_networks); db.accounts.hasOne(db.accounts_stats); db.creatives_status_types.hasOne(db.creatives_statuses, {foreignKey: 'creatives_status_types_id'}); // BELONGS TO db.accounts.belongsTo(db.platforms); db.accounts.belongsTo(db.accounts, {foreignKey: 'parent_id'}); db.accounts.belongsTo(db.influencers); db.accounts.belongsTo(db.accounts_categories, {foreignKey: 'account_category_id'}); db.accounts_networks.belongsTo(db.networks); db.accounts_networks.belongsTo(db.accounts); db.accounts_stats.belongsTo(db.accounts); db.accounts_historics.belongsTo(db.accounts); db.answers.belongsTo(db.influencers); db.accounts_carts.belongsTo(db.accounts); db.accounts_carts.belongsTo(db.groups); db.agencies.belongsTo(db.networks); db.brands.belongsTo(db.networks); db.campaigns.belongsTo(db.agencies); db.campaigns.belongsTo(db.networks); db.campaign_reports_custom.belongsTo(db.campaigns); db.groups.belongsTo(db.networks); db.campaigns.belongsTo(db.brands, {foreignKey: 'brandname_id'}); db.campaign_profiles.belongsTo(db.campaigns); db.creatives.belongsTo(db.initiatives); db.creatives.belongsTo(db.invites, {foreignKey: 'initiatives_accounts_invites_id'}); db.creatives.belongsTo(db.accounts); db.creatives.belongsTo(db.platforms); db.creatives_notes.belongsTo(db.creatives); db.creatives_statuses.belongsTo(db.creatives); db.creatives_statuses.belongsTo(db.creatives_status_types, {foreignKey: 'creatives_status_types_id'}); db.creatives_status_types.belongsTo(db.platforms); db.contacts.belongsTo(db.campaigns); db.point_of_contacts.belongsTo(db.campaigns); db.invites.belongsTo(db.initiatives); db.initiatives.belongsTo(db.platforms); db.initiatives.belongsTo(db.campaigns); db.initiatives.belongsTo(db.networks); db.initiatives.belongsTo(db.statuses, {foreignKey: 'initiative_status_id'}); db.invites.belongsTo(db.accounts); db.invites.hasMany(db.creatives, {foreignKey: 'initiatives_accounts_invites_id'}); db.invoices.belongsTo(db.influencers); db.invoices.belongsTo(db.networks, {foreignKey: 'network_id'}); db.metrics.belongsTo(db.accounts); db.notifications.belongsTo(db.invites, {foreignKey: 'invite_id'}); db.notifications.belongsTo(db.payments); db.notifications.belongsTo(db.line_items); db.notifications.belongsTo(db.influencers); db.notifications.belongsTo(db.creatives); db.optouts.belongsTo(db.campaigns); db.optouts.belongsTo(db.groups); db.reports_impressions.belongsTo(db.reports); db.reports_engagements.belongsTo(db.reports); db.payments.belongsTo(db.invoices); db.payments.belongsTo(db.creatives, { foreignKey: 'payable_id', scope: { type: 'creative' }}); db.payments.belongsTo(db.campaigns, {foreignKey: 'payable_id', scope: { type: 'campaign cost' }}); db.payments.belongsTo(db.influencers, {foreignKey: 'payable_id', scope: { type: 'referral' }}); db.line_items.belongsTo(db.networks); db.line_items.belongsTo(db.invoices); db.line_items.belongsTo(db.campaigns, {foreignKey: 'payable_id', scope: { type: 'campaign cost' }}); db.line_items.belongsTo(db.influencers, {foreignKey: 'payable_id', scope: { type: 'referral' }}); db.influencer_profiles.belongsTo(db.influencers); // HAS MANY db.accounts.hasMany(db.invites); db.accounts.hasMany(db.accounts_networks); db.agencies.hasMany(db.campaigns); db.campaigns.hasMany(db.contacts); db.campaigns.hasMany(db.point_of_contacts); db.campaigns.hasMany(db.initiatives); db.campaigns.hasMany(db.optouts); db.campaigns.hasMany(db.campaign_profiles); db.campaigns.hasMany(db.campaign_reports_custom); db.creatives.hasMany(db.creatives_statuses); db.creatives.hasMany(db.creatives_notes); db.groups.hasMany(db.optouts); db.influencers.hasMany(db.accounts); db.influencers.hasMany(db.invoices); db.influencers_networks.belongsTo(db.influencers); db.influencers_networks.belongsTo(db.networks); db.influencers_sessions.belongsTo(db.influencers); db.influencers_sessions.belongsTo(db.accounts); db.initiatives.hasMany(db.invites); db.invoices.hasMany(db.payments); db.invoices.hasMany(db.line_items); db.networks.hasMany(db.accounts_networks); db.networks.hasMany(db.agencies); db.networks.hasMany(db.brands); db.networks.hasMany(db.groups); db.networks.hasMany(db.campaigns); db.networks.hasMany(db.influencers_networks); db.platforms.hasMany(db.accounts); db.reports.hasMany(db.reports_impressions); db.reports.hasMany(db.reports_engagements); // BELONGS TO MANY db.accounts.belongsToMany(db.networks, {through: 'accounts_networks'}); db.accounts.belongsToMany(db.groups, {through: 'accounts_carts'}); //db.creatives.belongsToMany(db.creatives_status_types, {through: 'creatives_statuses'}); db.groups.belongsToMany(db.accounts, {through: 'accounts_carts', foreignKey: 'cart_id'}); module.exports = db;