const config = require('../../config'); const providers = config.providers; const crypto = require('crypto'); const bcrypt = require('bcrypt'); const moment = require('moment'); module.exports = function(sequelize, DataTypes) { const alumni_profiles = sequelize.define( 'alumni_profiles', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, }, student_number: { type: DataTypes.TEXT, }, first_name: { type: DataTypes.TEXT, }, middle_name: { type: DataTypes.TEXT, }, last_name: { type: DataTypes.TEXT, }, sex: { type: DataTypes.ENUM, values: [ "male", "female", "prefer_not_to_say" ], }, birth_date: { type: DataTypes.DATE, }, phone_number: { type: DataTypes.TEXT, }, current_address: { type: DataTypes.TEXT, }, civil_status: { type: DataTypes.ENUM, values: [ "single", "married", "separated", "widowed" ], }, graduation_year: { type: DataTypes.INTEGER, }, honors_awarded: { type: DataTypes.ENUM, values: [ "none", "cum_laude", "magna_cum_laude", "summa_cum_laude", "other" ], }, honors_details: { type: DataTypes.TEXT, }, data_completeness_status: { type: DataTypes.ENUM, values: [ "complete", "incomplete", "needs_review" ], }, last_profile_update_at: { type: DataTypes.DATE, }, importHash: { type: DataTypes.STRING(255), allowNull: true, unique: true, }, }, { timestamps: true, paranoid: true, freezeTableName: true, }, ); alumni_profiles.associate = (db) => { /// loop through entities and it's fields, and if ref === current e[name] and create relation has many on parent entity db.alumni_profiles.hasMany(db.alumni_skills, { as: 'alumni_skills_alumni_profile', foreignKey: { name: 'alumni_profileId', }, constraints: false, }); db.alumni_profiles.hasMany(db.employment_records, { as: 'employment_records_alumni_profile', foreignKey: { name: 'alumni_profileId', }, constraints: false, }); db.alumni_profiles.hasMany(db.survey_responses, { as: 'survey_responses_alumni_profile', foreignKey: { name: 'alumni_profileId', }, constraints: false, }); //end loop db.alumni_profiles.belongsTo(db.users, { as: 'user', foreignKey: { name: 'userId', }, constraints: false, }); db.alumni_profiles.belongsTo(db.programs, { as: 'program', foreignKey: { name: 'programId', }, constraints: false, }); db.alumni_profiles.hasMany(db.file, { as: 'profile_photo', foreignKey: 'belongsToId', constraints: false, scope: { belongsTo: db.alumni_profiles.getTableName(), belongsToColumn: 'profile_photo', }, }); db.alumni_profiles.belongsTo(db.users, { as: 'createdBy', }); db.alumni_profiles.belongsTo(db.users, { as: 'updatedBy', }); }; return alumni_profiles; };