Skip to content

Commit fc0c94e

Browse files
committed
Updated kotlin model generation
1 parent 83ffcb9 commit fc0c94e

File tree

1 file changed

+24
-25
lines changed

1 file changed

+24
-25
lines changed

src/utils/writeClientKotlinModels.ts

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { writeFileSync } from 'fs';
21
import { resolve } from 'path';
2+
import { Enum } from '../client/interfaces/Enum';
33

44
import type { Model } from '../client/interfaces/Model';
55
import type { HttpClient } from '../HttpClient';
@@ -27,26 +27,16 @@ export const writeClientKotlinModels = async (
2727
indent: Indent,
2828
kotlinPackageName: string
2929
): Promise<void> => {
30-
// console.log('[');
30+
for (const model of models) {
31+
if (model.export === 'all-of') {
32+
model.properties.forEach(prop => {});
3133

32-
const allOff = models.filter(model => model.properties.some(prop => prop.name === ''));
34+
const { realProps, realEnums, exportType } = getProperties(models, model);
3335

34-
if (allOff.length > 0) {
35-
for (const sub of allOff) {
36-
const prop = sub.properties.find(prop => prop.name === '');
37-
if (prop) {
38-
const model = models.find(model => model.name === prop.type);
39-
if (model) {
40-
model.referencedAsAllOf = true;
41-
}
42-
}
36+
model.properties = realProps;
37+
model.enum = realEnums;
38+
model.export = exportType;
4339
}
44-
}
45-
46-
for (const model of models) {
47-
const realProps = getProperties(models, model);
48-
model.properties = realProps;
49-
model.export = 'interface';
5040

5141
const file = resolve(outputPath, `${model.name}.kt`);
5242
const items = model.properties.length + model.enum.length + model.enums.length;
@@ -55,30 +45,39 @@ export const writeClientKotlinModels = async (
5545
continue;
5646
}
5747

58-
// console.log(JSON.stringify(model, null, 2), ',');
59-
6048
const templateResult = templates.exports.kotlinModel({
6149
...model,
6250
kotlinPackageName,
6351
});
6452
await writeFile(file, i(f(templateResult), indent));
6553
}
66-
// console.log(']');
6754
};
6855

6956
function getProperties(models: Model[], model: Model) {
7057
const realProps: Model[] = [];
58+
const realEnums: Enum[] = model.enum;
59+
let exportType = model.export;
7160
model.properties.forEach(prop => {
72-
if (prop.name === '' && prop.properties.length === 0 && prop.type !== 'any') {
61+
if (prop.name === '' && prop.export === 'reference') {
7362
const inheritedType = models.find(m => m.name === prop.type);
7463
if (inheritedType) {
75-
realProps.push(...getProperties(models, inheritedType));
64+
const { realProps: inheritedProps, realEnums: inheritedEnums } = getProperties(models, inheritedType);
65+
realProps.push(...inheritedProps);
66+
realEnums.push(...inheritedEnums);
7667
}
77-
} else if (prop.name === '' && prop.properties.length > 0 && prop.type === 'any') {
68+
} else if (prop.export === 'all-of') {
69+
const { realProps: inheritedProps, realEnums: inheritedEnums } = getProperties(models, prop);
70+
realProps.push(...inheritedProps);
71+
realEnums.push(...inheritedEnums);
72+
} else if (prop.name === '' && prop.properties.length > 0) {
73+
exportType = prop.export;
7874
realProps.push(...prop.properties);
75+
} else if (prop.export === 'enum' && prop.enum.length > 0) {
76+
exportType = prop.export;
77+
realEnums.push(...prop.enum);
7978
} else {
8079
realProps.push(prop);
8180
}
8281
});
83-
return realProps;
82+
return { realProps, realEnums, exportType };
8483
}

0 commit comments

Comments
 (0)