2020-11-11 15:23:39 +08:00
|
|
|
import path from 'path';
|
2020-12-23 12:46:13 +08:00
|
|
|
import Database from '@nocobase/database';
|
2020-11-11 15:23:39 +08:00
|
|
|
import Resourcer from '@nocobase/resourcer';
|
2021-09-23 00:16:04 +08:00
|
|
|
import { PluginOptions, Plugin } from '@nocobase/server';
|
2020-11-11 15:23:39 +08:00
|
|
|
|
2020-12-19 08:45:19 +08:00
|
|
|
import {
|
|
|
|
action as uploadAction,
|
|
|
|
middleware as uploadMiddleware,
|
|
|
|
} from './actions/upload';
|
2020-12-23 12:46:13 +08:00
|
|
|
import {
|
2021-12-03 07:31:22 +08:00
|
|
|
middleware as localMiddleware
|
2020-12-23 12:46:13 +08:00
|
|
|
} from './storages/local';
|
2021-12-03 07:31:22 +08:00
|
|
|
import { STORAGE_TYPE_ALI_OSS, STORAGE_TYPE_LOCAL } from './constants';
|
2020-12-19 08:45:19 +08:00
|
|
|
|
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;
|
|
|
|
|
|
|
|
database.import({
|
|
|
|
directory: path.resolve(__dirname, 'collections'),
|
2021-09-11 18:53:26 +08:00
|
|
|
});
|
2021-09-23 00:16:04 +08:00
|
|
|
|
|
|
|
// 暂时中间件只能通过 use 加进来
|
|
|
|
resourcer.use(uploadMiddleware);
|
|
|
|
resourcer.registerActionHandler('upload', uploadAction);
|
2021-12-03 07:31:22 +08:00
|
|
|
|
|
|
|
if (process.env.NOCOBASE_ENV !== 'production'
|
|
|
|
&& process.env.LOCAL_STORAGE_USE_STATIC_SERVER) {
|
|
|
|
await localMiddleware(this.app);
|
|
|
|
}
|
2021-09-23 00:16:04 +08:00
|
|
|
|
|
|
|
const Storage = database.getModel('storages');
|
2021-12-03 07:31:22 +08:00
|
|
|
|
2021-09-23 00:16:04 +08:00
|
|
|
this.app.on('db.init', async () => {
|
|
|
|
await Storage.create({
|
|
|
|
title: '本地存储',
|
|
|
|
name: `local`,
|
2021-12-03 07:31:22 +08:00
|
|
|
type: STORAGE_TYPE_LOCAL,
|
|
|
|
baseUrl: process.env.LOCAL_STORAGE_BASE_URL || `http://localhost:${process.env.API_PORT}/uploads`,
|
|
|
|
default: process.env.STORAGE_TYPE === STORAGE_TYPE_LOCAL,
|
2021-09-23 00:16:04 +08:00
|
|
|
});
|
|
|
|
await Storage.create({
|
|
|
|
name: `ali-oss`,
|
2021-12-03 07:31:22 +08:00
|
|
|
type: STORAGE_TYPE_ALI_OSS,
|
2021-09-23 00:16:04 +08:00
|
|
|
baseUrl: process.env.ALI_OSS_STORAGE_BASE_URL,
|
|
|
|
options: {
|
|
|
|
region: process.env.ALI_OSS_REGION,
|
|
|
|
accessKeyId: process.env.ALI_OSS_ACCESS_KEY_ID,
|
|
|
|
accessKeySecret: process.env.ALI_OSS_ACCESS_KEY_SECRET,
|
|
|
|
bucket: process.env.ALI_OSS_BUCKET,
|
|
|
|
},
|
|
|
|
default: process.env.STORAGE_TYPE === 'ali-oss',
|
|
|
|
});
|
2021-09-11 18:53:26 +08:00
|
|
|
});
|
2021-09-23 00:16:04 +08:00
|
|
|
},
|
|
|
|
} as PluginOptions;
|