You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
4 years ago
|
/* eslint-disable no-await-in-loop */
|
||
|
/* eslint-disable import/no-dynamic-require */
|
||
4 years ago
|
import {
|
||
4 years ago
|
lib, service, model, setting,
|
||
4 years ago
|
builtinLib, builtinHandler, builtinModel,
|
||
4 years ago
|
} from './common';
|
||
4 years ago
|
|
||
4 years ago
|
export async function load(call) {
|
||
4 years ago
|
let pending = await require('../lib/hpm').getInstalled();
|
||
|
const fail = [];
|
||
|
require('../lib/i18n');
|
||
|
require('../utils');
|
||
|
require('../error');
|
||
|
try {
|
||
|
require('../options');
|
||
|
} catch (e) {
|
||
4 years ago
|
await call({ entry: 'setup' });
|
||
4 years ago
|
require('../options');
|
||
|
}
|
||
4 years ago
|
const bus = require('../service/bus').default;
|
||
4 years ago
|
await new Promise((resolve) => {
|
||
|
const h = () => {
|
||
|
console.log('Database connected');
|
||
|
bus.unsubscribe(['system_database_connected'], h);
|
||
|
resolve();
|
||
|
};
|
||
|
bus.subscribe(['system_database_connected'], h);
|
||
|
require('../service/db');
|
||
|
});
|
||
|
for (const i of builtinLib) require(`../lib/${i}`);
|
||
|
await lib(pending, fail);
|
||
|
require('../service/gridfs');
|
||
|
require('../service/monitor');
|
||
|
const server = require('../service/server');
|
||
4 years ago
|
await server.default.prepare();
|
||
4 years ago
|
await service(pending, fail);
|
||
|
for (const i of builtinModel) require(`../model/${i}`);
|
||
|
for (const i of builtinHandler) require(`../handler/${i}`);
|
||
|
await model(pending, fail);
|
||
|
for (const m in global.Hydro.model) {
|
||
|
if (global.Hydro.model[m].ensureIndexes) {
|
||
|
await global.Hydro.model[m].ensureIndexes();
|
||
|
}
|
||
|
}
|
||
4 years ago
|
const modelSystem = require('../model/system');
|
||
|
const modelSetting = require('../model/setting');
|
||
|
const dbVer = await modelSystem.get('db.ver');
|
||
4 years ago
|
if (dbVer !== 1) {
|
||
|
const ins = require('../script/install');
|
||
|
await ins.run({ username: 'Root', password: 'rootroot' });
|
||
|
}
|
||
4 years ago
|
await setting(pending, fail, modelSetting, modelSystem);
|
||
4 years ago
|
for (const i in global.Hydro.service) {
|
||
|
if (global.Hydro.service[i].postInit) {
|
||
|
try {
|
||
|
await global.Hydro.service[i].postInit();
|
||
|
} catch (e) {
|
||
|
console.error(e);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
pending = [];
|
||
4 years ago
|
return await modelSystem.get('server.worker');
|
||
4 years ago
|
}
|