const {initialiseData, setupDatastore} = require("@budibase/core"); const constructHierarchy = require("../utilities/constructHierarchy"); 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"); const { masterAppPackage } = require("../utilities/createAppPackage"); module.exports = async (context, datastoreModule, username, password) => { try { const { config } = context; const databaseManager = getDatabaseManager( datastoreModule, config.datastoreConfig); await databaseManager.createEmptyMasterDb(); const masterDbConfig = databaseManager.masterDatastoreConfig; const datastore = setupDatastore( datastoreModule.getDatastore(masterDbConfig) ); await initialiseData(datastore, constructHierarchy(masterDbAppDefinition)); const masterPackage = masterAppPackage(context); const bbMaster = await getApisWithFullAccess( datastore, masterPackage); 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, masterPackage, username, password); } catch(e) { throw e; } };