adding user model and necessary basic fields

This commit is contained in:
Arjun Patel
2019-01-25 01:01:37 -08:00
parent 8c6f439f61
commit 598139c980
6 changed files with 95 additions and 1 deletions
+3
View File
@@ -4,6 +4,7 @@ const Sequelize = require('sequelize'),
CauseModel = require('../models/cause.model.js'),
RegionModel = require('../models/region.model.js'),
OrganizationModel = require('../models/organization.model.js'),
UserModel = require('../models/user.model.js'),
associate = require('./associate');
const connection_uri = process.env.JAWSDB_MARIA_URL;
@@ -38,11 +39,13 @@ const Grant = GrantModel(sequelize, Sequelize);
const Cause = CauseModel(sequelize, Sequelize);
const Region = RegionModel(sequelize, Sequelize);
const Organization = OrganizationModel(sequelize, Sequelize);
const User = UserModel(sequelize, Sequelize);
db.Donor = Donor;
db.Grant = Grant;
db.Cause = Cause;
db.Region = Region;
db.Organization = Organization;
db.User = User;
// make associations with created models
associate(db);
+2 -1
View File
@@ -1,5 +1,6 @@
module.exports = {
cause: require('./cause.controller'),
region: require('./region.controller'),
organization: require('./organization.controller')
organization: require('./organization.controller'),
user: require('./user.controller')
};
@@ -0,0 +1,31 @@
const db = require('../../config/db.config.js'),
errorMaker = require('../../helpers/error.maker');
const { Grant, Cause, Region, Organization, User } = db;
// POST an email into user general model from given email
exports.addEmail = (req, res, next) => {
User.findAll({
where: {
email: req.body.email
}
})
.then(users => {
if (users.length >= 1) {
return next(errorMaker(409, `Email Exists: ${req.body.email}`));
} else {
User.create({
email: req.body.email
})
.then(donor => {
// Send created user to client
return res.status(201).json({
message: 'User created',
donor
});
})
.catch(error => next(error));
}
})
.catch(error => next(error));
};
@@ -0,0 +1,35 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('users', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
first_name: Sequelize.STRING,
last_name: Sequelize.STRING,
email: {
type: Sequelize.STRING,
validate: {
isEmail: true
},
allowNull: false
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: new Date()
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: new Date()
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('users');
}
};
+21
View File
@@ -0,0 +1,21 @@
'use strict';
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('users', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
},
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
email: {
type: DataTypes.STRING,
validate: {
isEmail: true
},
allowNull: false
}
});
return User;
};
+3
View File
@@ -16,4 +16,7 @@ router.get('/organizations', controllers.organization.findAll);
// limitted numer returned; empty input still returns orgs
router.get('/organizations/:search', controllers.organization.searchOrgs);
// Add email to database from the landing page
router.post('/users/landing', controllers.user.addEmail);
module.exports = router;