-
Notifications
You must be signed in to change notification settings - Fork 2
/
server.js
56 lines (50 loc) · 1.59 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const createIoC = require('ioc/create')
const createAdminAccount = require('util/createAdminAccount')
const env = process.env.NODE_ENV || 'development'
/**
* Startup the server
*
* @param {object} ioc The IoC service
* @param {boolean} skipModelsInit Don't initialize the models
* @param {boolean} enableAuth If the authentication plugin should be enabled
* @returns {Promise} Promise resolving into the hapi server object
*/
async function startUpServer(ioc, skipModelsInit, enableAuth, registerRoutes) {
try {
const config = ioc.resolve('config')
// start up the server!
const server = await ioc.resolve(
'server',
config.get('manifest'),
skipModelsInit,
enableAuth,
registerRoutes,
)
await server.start()
server.app.ioc = ioc
server.log(`✅ Server is listening on ${server.info.uri.toLowerCase()}`)
if (env !== 'test') {
// check if there are any users, if not, create the default
const models = ioc.resolve('models')
const users = await models.user
.query()
.select('id')
.whereNot({ username: 'SYSTEM' })
.limit(1)
if (users.length === 0) {
await createAdminAccount(ioc)
}
}
// return the server instance
return server
} catch (err) {
const log = ioc.resolve('logger')
log.error({ err })
throw new Error('Error while starting up, check logs for details')
}
}
module.exports = startUpServer
// check if we're running as a require. If we are not, start up the server
if (!module.parent) {
startUpServer(createIoC(), true, true, true)
}