UNPKG

@speakr/speakr-module-services

Version:
241 lines (237 loc) • 6.63 kB
'use strict'; let _ = require('underscore'); module.exports = function(sequelize, DataTypes) { let campaigns = sequelize.define('campaigns', { id_hash: { type: DataTypes.STRING, allowNull: true }, title: { type: DataTypes.STRING }, start_date: { type: DataTypes.DATE }, end_date: { type: DataTypes.DATE }, description: { type: DataTypes.STRING, allowNull: true }, budget: { type: DataTypes.INTEGER, defaultValue: 0, allowNull: true }, impressions: { type: DataTypes.INTEGER, defaultValue: 0, allowNull: true }, cpm: { type: DataTypes.FLOAT, defaultValue: 0, allowNull: true }, added_value: { type: DataTypes.FLOAT, defaultValue: 0, allowNull: true }, product_price: { type: DataTypes.FLOAT, defaultValue: 0, allowNull: true }, total_cost: { type: DataTypes.FLOAT, defaultValue: 0, allowNull: true }, other_interests: { type: DataTypes.TEXT, allowNull: true }, rating: { type: DataTypes.ENUM("G", "PG", "R", "PG-13"), allowNull: true, field: "rating_enum" }, categories: { type: DataTypes.ARRAY(DataTypes.STRING), validate: {isIn: (values) => { values.map((value) => { if (['', 'Animals', 'Art', 'Cars', 'Celebs', 'Dance', 'Family', 'Fashion', 'Fitness', 'Food', 'Friends', 'Games', 'Giveaways', 'Luxury', 'Memes/Quotes', 'Movies', 'Music', 'Nature', 'News/Information/Tips', 'Party/Events', 'Professional Photos', 'Relationships', 'Science', 'Sports', 'Tech', 'Theatre', 'Things/Objects', 'Travel', 'Furniture', 'Himself/Herself', 'Houses', 'Other People', 'Tv', 'Urban/Cities', 'DIY'].indexOf(value) == -1) throw new Error("Not allowed."); }); return values; }}, isArray: true, allowNull: true, defaultValue: [] }, tones: { type: DataTypes.ARRAY(DataTypes.STRING), validate: {isIn: (values) => { values.map((value) => { if (['', 'Adventurous', 'Autobiographical/Lifecasting', 'Clean', 'Comedic', 'Conservative', 'Conversational', 'Edgy', 'Intellectual', 'Playful/Silly', 'Relatable', 'Romantic', 'Sarcastic/Snarky', 'Scary', 'Sexy', 'Artistic/Visually Captivating', 'Inspirational/Motivational'].indexOf(value) == -1) throw new Error("Not allowed."); }); return values; }}, isArray: true, allowNull: true, defaultValue: [] }, ethnicities: { type: DataTypes.ARRAY(DataTypes.STRING), validate: {isIn: (values) => { values.map((value) => { if (['', 'White/Caucasian', 'Black/African', 'Asian', 'Native American', 'Latino/Hispanic', 'Pacific Islander', 'East Indian', 'Middle Eastern', 'Other'].indexOf(value) == -1) throw new Error("Not allowed."); }); return values; }}, isArray: true, allowNull: true, defaultValue: [] }, age:{ type: DataTypes.RANGE, allowNull: true }, gender: { type: DataTypes.STRING, allowNull: true }, countries: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, states: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, cities: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, audience_ethnicities: { type: DataTypes.ARRAY(DataTypes.STRING), validate: {isIn: (values) => { values.map((value) => { if (['', 'White/Caucasian', 'Black/African', 'Asian', 'Native American', 'Latino/Hispanic', 'Pacific Islander', 'East Indian', 'Middle Eastern', 'Other'].indexOf(value) == -1) throw new Error("Not allowed."); }); return values; }}, isArray: true, allowNull: true, defaultValue: [] }, audience_age: { type: DataTypes.RANGE, allowNull: true }, audience_gender: { type: DataTypes.STRING, allowNull: true }, audience_countries: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, audience_states: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, audience_cities: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, audience_interests: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, inventory_types: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, simultaneous_campaigns: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, keywords_to_avoid: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, hashtags: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [] }, approval_requirements: { type: DataTypes.ARRAY(DataTypes.STRING), validate: {isIn: (values) => { values.map((value) => { if (['', 'influencer approval', 'post approval'].indexOf(value) == -1) throw new Error("Not allowed."); }); return values; }}, isArray: true, allowNull: true, defaultValue: [] }, account_categories: { type: DataTypes.ARRAY(DataTypes.STRING), isArray: true, allowNull: true, defaultValue: [], validate: {isIn: (values) => { values.map((value) => { if (['', 'real', 'parody', 'celeb', 'social celeb', 'specialty'].indexOf(value) == -1) throw new Error("Not allowed."); }); return values; }} }, estimated_engagements: { type: DataTypes.INTEGER, defaultValue: 0, allowNull: true }, program_value: { type: DataTypes.INTEGER, defaultValue: 0, allowNull: true }, report_url: { type: DataTypes.STRING }, created_at: { type: DataTypes.DATE }, updated_at: { type: DataTypes.DATE }, deleted_at: { type: DataTypes.DATE } }, { paranoid: true, underscored: true }); return campaigns; };