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.

61 lines
1.5 KiB

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 || {}),
});
}
`;
}
}