Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export var db: DbConnection = {};
- export var sequelize = new Sequelize(process.env.DB_CONNECTION_STRING);
- var basename = path.basename(module.filename);
- fs
- .readdirSync(__dirname)
- .filter(function (file) {
- return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
- })
- .forEach(function (file) {
- var model = sequelize['import'](path.join(__dirname, file));
- db[model['name']] = model;
- });
- Object.keys(db).forEach(function (modelName) {
- if (db[modelName].associate) {
- db[modelName].associate(db);
- }
- });
- db['sequelize'] = sequelize; db['Sequelize'] = Sequelize;
- export default <DbConnection>db;
- export default function defineUser(sequelize: Sequelize.Sequelize, DataTypes) {
- var User = sequelize.define<UserInstance, UserAttributes>('User', {
- email: {
- type: Sequelize.STRING,
- unique: true,
- validate: { isEmail: true }
- },
- password: Sequelize.STRING,
- role: {
- type: DataTypes.ENUM,
- values: ['Admin', 'Operator', 'Member']
- }
- });
- User.beforeCreate(function (user: UserInstance, options) {
- return hashPassword(user.password).then(function (hashedPw) {
- user.password = hashedPw;
- });
- })
- return User;
- };
- function hashPassword(password: string): Promise<string> {
- return new Promise(function (resolve, reject) {
- bcrypt.genSalt(5, function (err, salt) {
- if (err) { reject(err); }
- bcrypt.hash(password, salt, null, function (err, hash) {
- if (err) { reject(err); }
- resolve(hash);
- })
- });
- })
- };
- email: {
- type: Sequelize.STRING, //change to DataTypes.STRING
- unique: true,
- validate: { isEmail: true }
- },
- password: Sequelize.STRING, //change to DataTypes.STRING
- role: {
- type: DataTypes.ENUM,
- values: ['Admin', 'Operator', 'Member']
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement