0

I have a roles migrations.

'use strict';

var dbm;
var type;
var seed;

/**
  * We receive the dbmigrate dependency from dbmigrate initially.
  * This enables us to not have to rely on NODE_PATH.
  */
exports.setup = function (options, seedLink) {
  dbm = options.dbmigrate;
  type = dbm.dataType;
  seed = seedLink;
};

exports.up = function (db) {
  return db.createTable('roles', {
    role_id: { type: 'int', primaryKey: true, unique: true, autoIncrement: true },
    role_name: 'text',
  })
}

exports.down = function (db) {
  return db.dropTable('roles')
};

exports._meta = {
  "version": 1
};

Now, I would like to set some default roles. How am I suppose to do that?

'use strict';

var dbm;
var type;
var seed;

/**
  * We receive the dbmigrate dependency from dbmigrate initially.
  * This enables us to not have to rely on NODE_PATH.
  */

exports.setup = function (options, seedLink) {
  dbm = options.dbmigrate;
  type = dbm.dataType;
  seed = seedLink;
};

exports.up = function (db) {
  const sql = "DELETE FROM roles"
  db.runSql(sql, function (err) {
    if (err) return console.log(err)
  })

  return db.insert(
    'roles',
    ['user_role'],
    [['admin', 'technician']]
  )
};

exports.down = function (db) {
  const sql = "DELETE FROM roles"
  db.runSql(sql, function (err) {
    if (err) return console.log(err)
  })
  return null
};

exports._meta = {
  "version": 1
};

No matter what I try I always get

unterminated quoted string at or near "'admin);"

as an error.

It runs in the docker container and I already ran run migrate_up for both migrations

The documentation states I need to do this: insert(tableName, columnNameArray, valueArray, callback)

So, how do I add multiple rows in one statement?

Simon Nazarenko
  • 107
  • 2
  • 11

2 Answers2

0

I had similar issue, I managed to insert them one by one, push their promises into array and then call promise all on them. so in your case.

exports.up = function (db) {
  const sql = "DELETE FROM roles"
  db.runSql(sql, function (err) {
    if (err) return console.log(err)
  })
  

  const promises = [];

  promises.push(db.insert('roles', { user_role : 'admin'}))
  promises.push(db.insert('roles', { user_role : 'technician'}))

  return Promise.all(promises)
};
Rassix
  • 75
  • 4
0

Here is what I ended up doing. Hope it helps someone else

'use strict'

var dbm
var type
var seed

/**
 * We receive the dbmigrate dependency from dbmigrate initially.
 * This enables us to not have to rely on NODE_PATH.
 */
exports.setup = function (options, seedLink) {
  dbm = options.dbmigrate
  type = dbm.dataType
  seed = seedLink
}

exports.up = function (db) {
  // If there are roles, we need to delete them anyway
  const sql = 'DELETE FROM roles'
  db.runSql(sql, function (err) {
    if (err) return console.log(err)
  })

  return db.insert('roles', ['role_name'], ['admin']).then(
    function (result) {
      return db.insert('roles', ['role_name'], ['technician'])
    },
    function (err) {
      if (err) return console.log(err)
    },
  )
}

exports.down = function (db) {
  const sql = 'DELETE FROM roles'
  db.runSql(sql, function (err) {
    if (err) return console.log(err)
  })
  return null
}

exports._meta = {
  version: 1,
}
Simon Nazarenko
  • 107
  • 2
  • 11