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'),
|
CauseModel = require('../models/cause.model.js'),
|
||||||
RegionModel = require('../models/region.model.js'),
|
RegionModel = require('../models/region.model.js'),
|
||||||
OrganizationModel = require('../models/organization.model.js'),
|
OrganizationModel = require('../models/organization.model.js'),
|
||||||
|
UserModel = require('../models/user.model.js'),
|
||||||
associate = require('./associate');
|
associate = require('./associate');
|
||||||
|
|
||||||
const connection_uri = process.env.JAWSDB_MARIA_URL;
|
const connection_uri = process.env.JAWSDB_MARIA_URL;
|
||||||
@@ -38,11 +39,13 @@ const Grant = GrantModel(sequelize, Sequelize);
|
|||||||
const Cause = CauseModel(sequelize, Sequelize);
|
const Cause = CauseModel(sequelize, Sequelize);
|
||||||
const Region = RegionModel(sequelize, Sequelize);
|
const Region = RegionModel(sequelize, Sequelize);
|
||||||
const Organization = OrganizationModel(sequelize, Sequelize);
|
const Organization = OrganizationModel(sequelize, Sequelize);
|
||||||
|
const User = UserModel(sequelize, Sequelize);
|
||||||
db.Donor = Donor;
|
db.Donor = Donor;
|
||||||
db.Grant = Grant;
|
db.Grant = Grant;
|
||||||
db.Cause = Cause;
|
db.Cause = Cause;
|
||||||
db.Region = Region;
|
db.Region = Region;
|
||||||
db.Organization = Organization;
|
db.Organization = Organization;
|
||||||
|
db.User = User;
|
||||||
|
|
||||||
// make associations with created models
|
// make associations with created models
|
||||||
associate(db);
|
associate(db);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
cause: require('./cause.controller'),
|
cause: require('./cause.controller'),
|
||||||
region: require('./region.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
|
// limitted numer returned; empty input still returns orgs
|
||||||
router.get('/organizations/:search', controllers.organization.searchOrgs);
|
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;
|
module.exports = router;
|
||||||
|
|||||||
Reference in New Issue
Block a user