* api/ui 改名为 server/client * 微调 * 继续完善 pages * Fix env file and file mode. (#1) * Fix: ignore .env file and environment variable names. * Fix: correct file mode. * fix: put environment variables together * fix: separate data and ui resourcer * feat: collection loader * feat: redirectTo * feat: fields & actions & views * feat: fields & actions * feat: app & pages & collections... * feat: collections & pages & permissions... * Doc: add readme (#2) * Doc: add README.md. * Util: add .editorconfig. * Fix: use glob ignore option instead of additional checking. (#3) * Fix: typo. (#4) * feat: permissions * feat: getCollection & getView actions * refactor: code cleanup Co-authored-by: Junyi <mytharcher@users.noreply.github.com>
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { Model, ModelCtor } from '@nocobase/database';
|
|
import { ResourceOptions } from '@nocobase/resourcer';
|
|
import { get } from 'lodash';
|
|
|
|
export default async (ctx, next) => {
|
|
const { resourceName, resourceKey } = ctx.action.params;
|
|
const [Collection, Tab, View] = ctx.db.getModels(['collections', 'tabs', 'views']) as ModelCtor<Model>[];
|
|
const collection = await Collection.findOne(Collection.parseApiJson({
|
|
filter: {
|
|
name: resourceName,
|
|
},
|
|
// fields: {
|
|
// // appends: ['tabs'],
|
|
// },
|
|
}));
|
|
const views = await collection.getViews({
|
|
where: {
|
|
default: true,
|
|
},
|
|
});
|
|
collection.setDataValue('defaultViewId', get(views, [0, 'id']));
|
|
collection.setDataValue('defaultViewName', get(views, [0, 'name']));
|
|
const tabs = await collection.getTabs();
|
|
ctx.body = {
|
|
...collection.toJSON(),
|
|
tabs: tabs.map(tab => ({
|
|
...tab.toJSON(),
|
|
...tab.options,
|
|
viewCollectionName: tab.type == 'association' ? tab.options.association : tab.collection_name,
|
|
})),
|
|
};
|
|
await next();
|
|
}
|