You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.5 KiB
62 lines
1.5 KiB
6 months ago
|
import { Interface, BaseClass, Property, CodeGenerator } from 'pont-engine';
|
||
|
|
||
|
export default class MyGenerator extends CodeGenerator {
|
||
|
getInterfaceContentInDeclaration(inter: Interface) {
|
||
|
const requestParams = inter.getRequestParams();
|
||
|
const paramsCode = inter.getParamsCode('Params');
|
||
|
|
||
|
return `
|
||
|
export ${paramsCode}
|
||
|
|
||
|
export type Response = ${inter.responseType}
|
||
|
|
||
|
export const init: Response;
|
||
|
|
||
|
export function request(${requestParams}): Promise<Response>;
|
||
|
`;
|
||
|
}
|
||
|
|
||
|
getBaseClassInDeclaration(base: BaseClass) {
|
||
|
const originProps = base.properties;
|
||
|
|
||
|
base.properties = base.properties.map((prop) => {
|
||
|
return new Property({
|
||
|
...prop,
|
||
|
required: false,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
const result = super.getBaseClassInDeclaration(base);
|
||
|
base.properties = originProps;
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
getInterfaceContent(inter: Interface) {
|
||
|
const method = inter.method.toUpperCase();
|
||
|
const requestParams = inter.getRequestParams(this.surrounding);
|
||
|
const paramsCode = inter.getParamsCode('Params', this.surrounding);
|
||
|
const bodyParamsCode = inter.getBodyParamsCode();
|
||
|
console.log(requestParams);
|
||
|
|
||
|
return `
|
||
|
/**
|
||
|
* @desc ${inter.description}
|
||
|
*/
|
||
|
|
||
|
import Request from '@/utils/request';
|
||
|
|
||
|
export ${paramsCode}
|
||
|
|
||
|
export function request(${requestParams}) {
|
||
|
return Request({
|
||
|
url:'${inter.path}',
|
||
|
method: '${method}',
|
||
|
data: ${method === 'GET' ? 'params' : bodyParamsCode ? 'body' : '{}'},
|
||
|
...(options || {}),
|
||
|
});
|
||
|
}
|
||
|
`;
|
||
|
}
|
||
|
}
|