chore(api-doc): view collection api doc
This commit is contained in:
parent
0fd38a5c56
commit
7fd126d6a3
@ -8,6 +8,7 @@ import {
|
|||||||
} from '@nocobase/database';
|
} from '@nocobase/database';
|
||||||
import multipleAssociation from './multiple-association';
|
import multipleAssociation from './multiple-association';
|
||||||
import singleAssociation from './single-association';
|
import singleAssociation from './single-association';
|
||||||
|
import { isViewCollection } from '..';
|
||||||
|
|
||||||
export default (collection: Collection) => {
|
export default (collection: Collection) => {
|
||||||
return associationFields(collection)
|
return associationFields(collection)
|
||||||
@ -27,6 +28,10 @@ export default (collection: Collection) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export function associationFields(collection: Collection): Array<RelationField> {
|
export function associationFields(collection: Collection): Array<RelationField> {
|
||||||
|
if (isViewCollection(collection)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
return Array.from(collection.fields.values())
|
return Array.from(collection.fields.values())
|
||||||
.filter((field) => field instanceof RelationField)
|
.filter((field) => field instanceof RelationField)
|
||||||
.filter((field) => field.name !== 'createdBy' && field.name !== 'updatedBy');
|
.filter((field) => field.name !== 'createdBy' && field.name !== 'updatedBy');
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Collection, RelationField } from '@nocobase/database';
|
import { Collection, RelationField } from '@nocobase/database';
|
||||||
import { hasSortField } from './index';
|
import { hasSortField, readOnlyCollection } from './index';
|
||||||
|
|
||||||
type TemplateOptions = {
|
type TemplateOptions = {
|
||||||
collection: Collection;
|
collection: Collection;
|
||||||
@ -327,11 +327,16 @@ export default (collection: Collection) => {
|
|||||||
const apiDoc: any = {
|
const apiDoc: any = {
|
||||||
[`/${collection.name}:list`]: ListActionTemplate(options),
|
[`/${collection.name}:list`]: ListActionTemplate(options),
|
||||||
[`/${collection.name}:get`]: GetActionTemplate(options),
|
[`/${collection.name}:get`]: GetActionTemplate(options),
|
||||||
[`/${collection.name}:create`]: CreateActionTemplate(options),
|
|
||||||
[`/${collection.name}:update`]: UpdateActionTemplate(options),
|
|
||||||
[`/${collection.name}:destroy`]: DestroyActionTemplate(options),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!readOnlyCollection(collection)) {
|
||||||
|
Object.assign(apiDoc, {
|
||||||
|
[`/${collection.name}:create`]: CreateActionTemplate(options),
|
||||||
|
[`/${collection.name}:update`]: UpdateActionTemplate(options),
|
||||||
|
[`/${collection.name}:destroy`]: DestroyActionTemplate(options),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (hasSortField(collection)) {
|
if (hasSortField(collection)) {
|
||||||
apiDoc[`/${collection.name}:move`] = MoveActionTemplate(options);
|
apiDoc[`/${collection.name}:move`] = MoveActionTemplate(options);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import associations from './associations';
|
|||||||
export default (collection: Collection, options) => {
|
export default (collection: Collection, options) => {
|
||||||
const paths = list(collection);
|
const paths = list(collection);
|
||||||
|
|
||||||
if (options.withAssociation) {
|
if (options.withAssociation && !isViewCollection(collection)) {
|
||||||
Object.assign(paths, associations(collection));
|
Object.assign(paths, associations(collection));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21,3 +21,11 @@ export function hasSortField(collection: Collection) {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function readOnlyCollection(collection: Collection) {
|
||||||
|
return isViewCollection(collection) && collection.options?.writableView == false;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isViewCollection(collection: Collection) {
|
||||||
|
return collection.isView();
|
||||||
|
}
|
||||||
|
273
packages/plugins/collection-manager/src/swagger/index.ts
Normal file
273
packages/plugins/collection-manager/src/swagger/index.ts
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
export default {
|
||||||
|
openapi: '3.0.2',
|
||||||
|
info: {
|
||||||
|
title: 'NocoBase API - Collection manager plugin',
|
||||||
|
},
|
||||||
|
tags: [],
|
||||||
|
paths: {
|
||||||
|
'/collections:list': {
|
||||||
|
get: {
|
||||||
|
tags: ['collections'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections:get': {
|
||||||
|
get: {
|
||||||
|
tags: ['collections'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections:create': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections:update': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections:destroy': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections:move': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections:setFields': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections/{collectionName}/fields:get': {
|
||||||
|
get: {
|
||||||
|
tags: ['collections.fields'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections/{collectionName}/fields:list': {
|
||||||
|
get: {
|
||||||
|
tags: ['collections.fields'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections/{collectionName}/fields:create': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections.fields'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections/{collectionName}/fields:update': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections.fields'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections/{collectionName}/fields:destroy': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections.fields'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collections/{collectionName}/fields:move': {
|
||||||
|
post: {
|
||||||
|
tags: ['collections.fields'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collectionCategories:list': {
|
||||||
|
post: {
|
||||||
|
tags: ['collectionCategories'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collectionCategories:get': {
|
||||||
|
post: {
|
||||||
|
tags: ['collectionCategories'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collectionCategories:create': {
|
||||||
|
post: {
|
||||||
|
tags: ['collectionCategories'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collectionCategories:update': {
|
||||||
|
post: {
|
||||||
|
tags: ['collectionCategories'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collectionCategories:destroy': {
|
||||||
|
post: {
|
||||||
|
tags: ['collectionCategories'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/collectionCategories:move': {
|
||||||
|
post: {
|
||||||
|
tags: ['collectionCategories'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/dbViews:get': {
|
||||||
|
get: {
|
||||||
|
tags: ['dbViews'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/dbViews:list': {
|
||||||
|
get: {
|
||||||
|
tags: ['dbViews'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/dbViews:query': {
|
||||||
|
get: {
|
||||||
|
tags: ['dbViews'],
|
||||||
|
description: '',
|
||||||
|
parameters: [],
|
||||||
|
responses: {
|
||||||
|
'200': {
|
||||||
|
description: 'OK',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user