tachybase_todo/packages/plugin-file-manager/src/server.ts

45 lines
1.4 KiB
TypeScript
Raw Normal View History

import path from 'path';
import Database from '@nocobase/database';
import Resourcer from '@nocobase/resourcer';
import { PluginOptions } from '@nocobase/server';
2021-12-06 21:23:34 +08:00
import { action as uploadAction, middleware as uploadMiddleware } from './actions/upload';
import { getStorageConfig } from './storages';
import { STORAGE_TYPE_LOCAL } from './constants';
2021-09-23 00:16:04 +08:00
export default {
name: 'file-manager',
async load() {
const database: Database = this.app.db;
const resourcer: Resourcer = this.app.resourcer;
2021-12-06 21:23:34 +08:00
await database.import({
2021-09-23 00:16:04 +08:00
directory: path.resolve(__dirname, 'collections'),
2021-09-11 18:53:26 +08:00
});
2021-12-06 21:23:34 +08:00
2021-09-23 00:16:04 +08:00
// 暂时中间件只能通过 use 加进来
resourcer.use(uploadMiddleware);
resourcer.registerActionHandler('upload', uploadAction);
const { DEFAULT_STORAGE_TYPE } = process.env;
2021-12-06 21:23:34 +08:00
if (process.env.NOCOBASE_ENV !== 'production') {
await getStorageConfig(STORAGE_TYPE_LOCAL).middleware(this.app);
}
2021-12-06 21:23:34 +08:00
2021-09-23 00:16:04 +08:00
this.app.on('db.init', async () => {
const defaultStorageConfig = getStorageConfig(DEFAULT_STORAGE_TYPE);
if (defaultStorageConfig) {
2021-12-06 21:23:34 +08:00
const Storage = database.getCollection('storages');
await Storage.repository.create({
values: {
...defaultStorageConfig.defaults(),
type: DEFAULT_STORAGE_TYPE,
default: true,
},
});
}
2021-09-11 18:53:26 +08:00
});
2021-09-23 00:16:04 +08:00
},
} as PluginOptions;