const {faker} = require('@faker-js/faker'); const TableImporter = require('./TableImporter'); class RolesUsersImporter extends TableImporter { static table = 'roles_users'; // No roles imorter, since roles are statically defined in database static dependencies = ['users']; constructor(knex, transaction) { super(RolesUsersImporter.table, knex, transaction); } /** * Ignore overriden quantity for 1:1 relationship */ async import() { const users = await this.transaction.select('id').from('users').whereNot('id', 1); this.roles = await this.transaction.select('id', 'name').from('roles'); await this.importForEach(users, 1); } generate() { const userRoles = ['Editor', 'Contributor', 'Author']; const userRole = userRoles[faker.datatype.number({ min: 0, max: userRoles.length - 1 })]; const actualRole = this.roles.find(role => role.name === userRole); if (!actualRole) { // No roles defined in database, don't bother creating user role return; } return { id: faker.database.mongodbObjectId(), role_id: actualRole.id, user_id: this.model.id }; } } module.exports = RolesUsersImporter;