const { v4: uuid } = require('uuid'); module.exports = { /** * @param{import("sequelize").QueryInterface} queryInterface * @return {Promise} */ async up(queryInterface) { const createdAt = new Date(); const updatedAt = new Date(); /** @type {Map} */ const idMap = new Map(); /** * @param {string} key * @return {string} */ function getId(key) { if (idMap.has(key)) { return idMap.get(key); } const id = uuid(); idMap.set(key, id); return id; } await queryInterface.bulkInsert('roles', [ { id: getId('SuperAdmin'), name: 'Super Administrator', createdAt, updatedAt, }, { id: getId('Administrator'), name: 'Administrator', createdAt, updatedAt, }, { id: getId('LeadPastor'), name: 'Lead Pastor', createdAt, updatedAt }, { id: getId('AssistantPastor'), name: 'Assistant Pastor', createdAt, updatedAt, }, { id: getId('ChurchCommitteeMember'), name: 'Church Committee Member', createdAt, updatedAt, }, { id: getId('ChurchMember'), name: 'Church Member', createdAt, updatedAt, }, { id: getId('Guest'), name: 'Guest', createdAt, updatedAt }, { id: getId('Public'), name: 'Public', createdAt, updatedAt }, ]); /** * @param {string} name */ function createPermissions(name) { return [ { id: getId(`CREATE_${name.toUpperCase()}`), createdAt, updatedAt, name: `CREATE_${name.toUpperCase()}`, }, { id: getId(`READ_${name.toUpperCase()}`), createdAt, updatedAt, name: `READ_${name.toUpperCase()}`, }, { id: getId(`UPDATE_${name.toUpperCase()}`), createdAt, updatedAt, name: `UPDATE_${name.toUpperCase()}`, }, { id: getId(`DELETE_${name.toUpperCase()}`), createdAt, updatedAt, name: `DELETE_${name.toUpperCase()}`, }, ]; } const entities = [ 'users', 'bible_books', 'bible_chapters', 'bible_verses', 'categories', 'events', 'translations', 'roles', 'permissions', 'churches', , ]; await queryInterface.bulkInsert( 'permissions', entities.flatMap(createPermissions), ); await queryInterface.bulkInsert('permissions', [ { id: getId(`READ_API_DOCS`), createdAt, updatedAt, name: `READ_API_DOCS`, }, ]); await queryInterface.bulkInsert('permissions', [ { id: getId(`CREATE_SEARCH`), createdAt, updatedAt, name: `CREATE_SEARCH`, }, ]); await queryInterface.bulkUpdate( 'roles', { globalAccess: true }, { id: getId('SuperAdmin') }, ); await queryInterface.sequelize .query(`create table "rolesPermissionsPermissions" ( "createdAt" timestamp with time zone not null, "updatedAt" timestamp with time zone not null, "roles_permissionsId" uuid not null, "permissionId" uuid not null, primary key ("roles_permissionsId", "permissionId") );`); await queryInterface.bulkInsert('rolesPermissionsPermissions', [ { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('CREATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('READ_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('UPDATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('DELETE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('CREATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('READ_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('UPDATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('CREATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('READ_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchMember'), permissionId: getId('READ_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Guest'), permissionId: getId('READ_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('CREATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('READ_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('UPDATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('DELETE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('CREATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('READ_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('UPDATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('CREATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('READ_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchMember'), permissionId: getId('READ_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Guest'), permissionId: getId('READ_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('CREATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('READ_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('UPDATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('DELETE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('CREATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('READ_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('UPDATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('CREATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('READ_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchMember'), permissionId: getId('READ_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Guest'), permissionId: getId('READ_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('CREATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('READ_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('UPDATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('DELETE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('CREATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('READ_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('UPDATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('CREATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('READ_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchMember'), permissionId: getId('READ_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Guest'), permissionId: getId('READ_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('CREATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('READ_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('UPDATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('DELETE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('CREATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('READ_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('UPDATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('CREATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('READ_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchMember'), permissionId: getId('READ_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Guest'), permissionId: getId('READ_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('CREATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('READ_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('UPDATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('DELETE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('CREATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('READ_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('UPDATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('CREATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('READ_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchMember'), permissionId: getId('READ_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Guest'), permissionId: getId('READ_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('CREATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('READ_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('UPDATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('DELETE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('CREATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('READ_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('UPDATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('CREATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('READ_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchMember'), permissionId: getId('READ_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Guest'), permissionId: getId('READ_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('LeadPastor'), permissionId: getId('CREATE_SEARCH'), }, { createdAt, updatedAt, roles_permissionsId: getId('AssistantPastor'), permissionId: getId('CREATE_SEARCH'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchCommitteeMember'), permissionId: getId('CREATE_SEARCH'), }, { createdAt, updatedAt, roles_permissionsId: getId('ChurchMember'), permissionId: getId('CREATE_SEARCH'), }, { createdAt, updatedAt, roles_permissionsId: getId('Guest'), permissionId: getId('CREATE_SEARCH'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('READ_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('UPDATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('DELETE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('READ_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('UPDATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('DELETE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('READ_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('UPDATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('DELETE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('READ_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('UPDATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('DELETE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('READ_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('UPDATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('DELETE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('READ_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('UPDATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('DELETE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('READ_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('UPDATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('DELETE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_USERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_BIBLE_BOOKS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_BIBLE_CHAPTERS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_BIBLE_VERSES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_CATEGORIES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_EVENTS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_TRANSLATIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_ROLES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_ROLES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_ROLES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_ROLES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_PERMISSIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_PERMISSIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_PERMISSIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_PERMISSIONS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_CHURCHES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_CHURCHES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('UPDATE_CHURCHES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('DELETE_CHURCHES'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('READ_API_DOCS'), }, { createdAt, updatedAt, roles_permissionsId: getId('SuperAdmin'), permissionId: getId('CREATE_SEARCH'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('READ_API_DOCS'), }, { createdAt, updatedAt, roles_permissionsId: getId('Administrator'), permissionId: getId('CREATE_SEARCH'), }, ]); await queryInterface.sequelize.query( `UPDATE "users" SET "app_roleId"='${getId( 'SuperAdmin', )}' WHERE "email"='super_admin@flatlogic.com'`, ); await queryInterface.sequelize.query( `UPDATE "users" SET "app_roleId"='${getId( 'Administrator', )}' WHERE "email"='admin@flatlogic.com'`, ); await queryInterface.sequelize.query( `UPDATE "users" SET "app_roleId"='${getId( 'LeadPastor', )}' WHERE "email"='client@hello.com'`, ); await queryInterface.sequelize.query( `UPDATE "users" SET "app_roleId"='${getId( 'AssistantPastor', )}' WHERE "email"='john@doe.com'`, ); }, };