Skip to content

Commit 9fc6f20

Browse files
committed
Array of objects json export reviwed
1 parent 00e3bd5 commit 9fc6f20

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

src/pods/toolbar/components/export-button/export-button.business.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,21 @@ export const expandAllFieldsInTables = (table: TableVm[]) =>
146146
// Export Schema functions
147147
export const getPropertyJsonSchema = (field: FieldVm): string => {
148148
if (field.isArray) {
149-
return `"${field.name}": { bsonType: "array", items: { bsonType: "${field.type}" } }`;
149+
return `"${field.name}": { bsonType: "array", items: ${getItemType(field)} }`;
150150
}
151+
return `"${field.name}": ${getItemType(field)}`;
152+
};
151153

154+
export const getItemType = (field: FieldVm, useTab = true): string => {
152155
if (field.children && field.children.length > 0) {
153-
const properties = getPropertiesJsonSchema(field.children, false);
154-
return `"${field.name}": { bsonType: "object", title: "${field.name}", properties: { ${properties}, }, }`;
155-
}
156-
return `"${field.name}": { bsonType: "${field.type}" }`;
157-
};
156+
const separator = useTab ? ',\n ' : ', ';
157+
const tabSeparator = useTab ? '\n ' : ' ';
158+
const properties = getPropertiesJsonSchema(field.children);
159+
160+
return `{ ${tabSeparator} bsonType: "object" ${separator} title: "${field.name}" ${separator} required: [${getRequiredFields(field.children)}] ${separator} properties: {${properties}} } `;
161+
}
162+
return `{ bsonType: "${field.type}" }`;
163+
}
158164

159165
export const getPropertiesJsonSchema = (
160166
fields: FieldVm[],

0 commit comments

Comments
 (0)