const {initialiseData, setupDatastore, getTemplateApi} = require("budibase-core"); const getDatabaseManager = require("../utilities/databaseManager"); const {getApisForUser, getApisWithFullAccess} = require("../utilities/budibaseApi"); const masterDbAppDefinition = require("../appPackages/master/appDefinition.json"); const masterDbAccessLevels = require("../appPackages/master/access_levels.json"); module.exports = async (datastoreModule, rootConfig, username, password) => { try { const databaseManager = getDatabaseManager(datastoreModule, rootConfig); await databaseManager.createEmptyMasterDb(); const masterDbConfig = databaseManager.masterDatastoreConfig; const datastore = setupDatastore( datastoreModule.getDatastore(masterDbConfig) ); const templateApi = getTemplateApi({datastore}); await initialiseData(datastore, { heirarchy:templateApi.constructHeirarchy(masterDbAppDefinition.hierarchy), actions:masterDbAppDefinition.actions, triggers:masterDbAppDefinition.triggers }); const bbMaster = await getApisWithFullAccess(datastore); await bbMaster.authApi.saveAccessLevels(masterDbAccessLevels); const user = bbMaster.authApi.getNewUser(); user.name = username; user.accessLevels= ["owner"]; await bbMaster.authApi.createUser(user, password); return await getApisForUser(datastore, username, password); } catch(e) { throw e; } };