mirror of
https://github.com/nocodb/nocodb.git
synced 2026-04-24 18:05:18 +00:00
45 lines
1.5 KiB
Plaintext
45 lines
1.5 KiB
Plaintext
<%
|
|
const { modelTypes, utils } = it;
|
|
const { formatDescription, require, _ } = utils;
|
|
|
|
|
|
const dataContractTemplates = {
|
|
enum: (contract) => {
|
|
return `enum ${contract.name} {\r\n${contract.content} \r\n }`;
|
|
},
|
|
interface: (contract) => {
|
|
return `interface ${contract.name} {\r\n${contract.content}}`;
|
|
},
|
|
type: (contract) => {
|
|
return `type ${contract.name} = ${contract.content}`;
|
|
},
|
|
}
|
|
|
|
const createDescription = (contract) => {
|
|
if (!contract.typeData) return _.compact([contract.description]);
|
|
|
|
return _.compact([
|
|
contract.description && formatDescription(contract.description),
|
|
!_.isUndefined(contract.typeData.format) && `@format ${contract.typeData.format}`,
|
|
!_.isUndefined(contract.typeData.minimum) && `@min ${contract.typeData.minimum}`,
|
|
!_.isUndefined(contract.typeData.maximum) && `@max ${contract.typeData.maximum}`,
|
|
!_.isUndefined(contract.typeData.pattern) && `@pattern ${contract.typeData.pattern}`,
|
|
!_.isUndefined(contract.typeData.example) && `@example ${
|
|
_.isObject(contract.typeData.example) ? JSON.stringify(contract.typeData.example) : contract.typeData.example
|
|
}`,
|
|
]);
|
|
}
|
|
%>
|
|
<% modelTypes.forEach((contract) => { %>
|
|
<% const description = createDescription(contract); %>
|
|
<% if (description.length) { %>
|
|
/**
|
|
<%~ description.map(part => `* ${part}`).join("\n") %>
|
|
|
|
*/
|
|
<% } %>
|
|
export <%~ (dataContractTemplates[contract.typeIdentifier] || dataContractTemplates.type)(contract) %>
|
|
|
|
|
|
<% }) %>
|