2020-11-11 15:23:39 +08:00
|
|
|
import path from 'path';
|
2020-12-01 20:11:39 +08:00
|
|
|
import { Application } from '@nocobase/server';
|
|
|
|
import hooks from './hooks';
|
|
|
|
import { registerModels } from '@nocobase/database';
|
|
|
|
import * as models from './models';
|
2020-11-11 15:23:39 +08:00
|
|
|
|
2020-12-01 20:11:39 +08:00
|
|
|
export default async function (this: Application, options = {}) {
|
|
|
|
const database = this.database;
|
|
|
|
const resourcer = this.resourcer;
|
|
|
|
// 提供全局的 models 注册机制
|
|
|
|
registerModels(models);
|
2020-11-11 15:23:39 +08:00
|
|
|
|
2020-11-11 20:57:18 +08:00
|
|
|
database.import({
|
2020-11-11 15:23:39 +08:00
|
|
|
directory: path.resolve(__dirname, 'collections'),
|
|
|
|
});
|
2020-12-01 20:11:39 +08:00
|
|
|
|
|
|
|
Object.keys(hooks).forEach(modelName => {
|
|
|
|
const Model = database.getModel(modelName);
|
|
|
|
Object.keys(hooks[modelName]).forEach(hookKey => {
|
|
|
|
// TODO(types): 多层 map 映射类型定义较为复杂,暂时忽略
|
|
|
|
// @ts-ignore
|
|
|
|
Model.addHook(hookKey, hooks[modelName][hookKey]);
|
|
|
|
});
|
|
|
|
});
|
2020-12-07 17:21:14 +08:00
|
|
|
try {
|
|
|
|
// 加载数据库表 collections 中已经保存的表配置
|
|
|
|
// 如果未 sync 可能报错
|
|
|
|
// TODO collections sync
|
2020-12-08 09:01:15 +08:00
|
|
|
// await database.getModel('collections').load();
|
2020-12-07 17:21:14 +08:00
|
|
|
} catch (error) {
|
|
|
|
}
|
2020-11-11 15:23:39 +08:00
|
|
|
}
|