adding user model and necessary basic fields
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user