Skip to content
Snippets Groups Projects
init-db.js 2.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • // eslint-disable-next-line @typescript-eslint/no-var-requires
    const mongoose = require('mongoose');
    // eslint-disable-next-line @typescript-eslint/no-var-requires
    const userData = require('./data/users');
    // eslint-disable-next-line @typescript-eslint/no-var-requires
    const bcrypt = require('bcrypt');
    // eslint-disable-next-line @typescript-eslint/no-var-requires
    
    const path = require('path');
    // eslint-disable-next-line @typescript-eslint/no-var-requires
    // const app = require(path.resolve(__dirname, './server'));
    require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
    
    
    /* connect to the database */
    const param =
      'mongodb://' +
      process.env.MONGO_NON_ROOT_USERNAME +
      ':' +
      process.env.MONGO_NON_ROOT_PASSWORD +
      '@' +
      process.env.MONGO_DB_HOST_AND_PORT +
      '/ram';
    mongoose.connect(param, { useNewUrlParser: true, useUnifiedTopology: true }).catch((error) => console.log(error));
    // Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
    // by default, you need to set it to false.
    mongoose.set('useFindAndModify', false);
    
    function hashPassword() {
      return bcrypt.hashSync(process.env.USER_PWD, process.env.SALT);
    }
    
    // define Schema
    var usersSchema = mongoose.Schema({
      name: String,
      surname: String,
      email: String,
      emailVerified: Boolean,
      validationToken: String,
      resetPasswordToken: String,
      role: Number,
      changeEmailToken: String,
      newEmail: String,
      structuresLink: [],
      structureOutdatedMailSent: [],
      pendingStructuresLink: [],
      password: String,
      phone: String,
    });
    
    // compile schema to model
    var User = mongoose.model('Users', usersSchema);
    
    /* drop users collections */
    mongoose.connection.dropCollection('users', function (err) {
      /* show messages */
      if (err) {
        if (err.code === 26) console.log('-- Users collection does not exists --');
        else throw err;
      } else console.log('-- Users collection dropped --');
    
      // Init passsword
      console.log('-- Users password encryption based on .env --');
      userData.data.forEach((user) => {
        user.password = hashPassword();
      });
      // save model to database
    
    Hugo SUBTIL's avatar
    Hugo SUBTIL committed
      User.create(userData.data, function (error, user) {
        if (error) return console.error(error);
    
        console.log('-- Users collection initialized --');
    
        process.exit(0);