2023-02-14 15:30:58 +08:00
|
|
|
import { Model, Transactionable } from '@nocobase/database';
|
2022-03-28 22:01:10 +08:00
|
|
|
import { Application } from '@nocobase/server';
|
2023-03-19 23:40:42 +08:00
|
|
|
import { AppOptionsFactory } from '../server';
|
2022-03-28 22:01:10 +08:00
|
|
|
|
2022-05-22 08:48:19 +08:00
|
|
|
export interface registerAppOptions extends Transactionable {
|
2022-03-28 22:01:10 +08:00
|
|
|
skipInstall?: boolean;
|
2023-02-14 15:30:58 +08:00
|
|
|
appOptionsFactory: AppOptionsFactory;
|
2022-03-28 22:01:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export class ApplicationModel extends Model {
|
2023-03-19 23:40:42 +08:00
|
|
|
registerToMainApp(mainApp: Application, options: registerAppOptions) {
|
2022-03-28 22:01:10 +08:00
|
|
|
const appName = this.get('name') as string;
|
2022-04-24 20:22:50 +08:00
|
|
|
const appOptions = (this.get('options') as any) || {};
|
2022-03-28 22:01:10 +08:00
|
|
|
|
2023-03-19 23:40:42 +08:00
|
|
|
const subAppOptions = {
|
2023-02-14 15:30:58 +08:00
|
|
|
...options.appOptionsFactory(appName, mainApp),
|
|
|
|
...appOptions,
|
2023-02-16 09:46:23 +08:00
|
|
|
name: appName,
|
2023-03-19 23:40:42 +08:00
|
|
|
};
|
2022-09-18 14:10:01 +08:00
|
|
|
|
2023-03-19 23:40:42 +08:00
|
|
|
const subApp = new Application(subAppOptions);
|
2022-09-18 14:10:01 +08:00
|
|
|
|
2023-03-19 23:40:42 +08:00
|
|
|
mainApp.appManager.addSubApp(subApp);
|
2022-04-30 23:41:01 +08:00
|
|
|
|
2023-03-19 23:40:42 +08:00
|
|
|
console.log(`register application ${appName} to main app`);
|
|
|
|
return subApp;
|
2022-03-28 22:01:10 +08:00
|
|
|
}
|
|
|
|
}
|