1
- import { writeFileSync } from 'fs' ;
2
1
import { resolve } from 'path' ;
2
+ import { Enum } from '../client/interfaces/Enum' ;
3
3
4
4
import type { Model } from '../client/interfaces/Model' ;
5
5
import type { HttpClient } from '../HttpClient' ;
@@ -27,26 +27,16 @@ export const writeClientKotlinModels = async (
27
27
indent : Indent ,
28
28
kotlinPackageName : string
29
29
) : Promise < void > => {
30
- // console.log('[');
30
+ for ( const model of models ) {
31
+ if ( model . export === 'all-of' ) {
32
+ model . properties . forEach ( prop => { } ) ;
31
33
32
- const allOff = models . filter ( model => model . properties . some ( prop => prop . name === '' ) ) ;
34
+ const { realProps , realEnums , exportType } = getProperties ( models , model ) ;
33
35
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 ;
43
39
}
44
- }
45
-
46
- for ( const model of models ) {
47
- const realProps = getProperties ( models , model ) ;
48
- model . properties = realProps ;
49
- model . export = 'interface' ;
50
40
51
41
const file = resolve ( outputPath , `${ model . name } .kt` ) ;
52
42
const items = model . properties . length + model . enum . length + model . enums . length ;
@@ -55,30 +45,39 @@ export const writeClientKotlinModels = async (
55
45
continue ;
56
46
}
57
47
58
- // console.log(JSON.stringify(model, null, 2), ',');
59
-
60
48
const templateResult = templates . exports . kotlinModel ( {
61
49
...model ,
62
50
kotlinPackageName,
63
51
} ) ;
64
52
await writeFile ( file , i ( f ( templateResult ) , indent ) ) ;
65
53
}
66
- // console.log(']');
67
54
} ;
68
55
69
56
function getProperties ( models : Model [ ] , model : Model ) {
70
57
const realProps : Model [ ] = [ ] ;
58
+ const realEnums : Enum [ ] = model . enum ;
59
+ let exportType = model . export ;
71
60
model . properties . forEach ( prop => {
72
- if ( prop . name === '' && prop . properties . length === 0 && prop . type !== 'any ') {
61
+ if ( prop . name === '' && prop . export === 'reference ') {
73
62
const inheritedType = models . find ( m => m . name === prop . type ) ;
74
63
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 ) ;
76
67
}
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 ;
78
74
realProps . push ( ...prop . properties ) ;
75
+ } else if ( prop . export === 'enum' && prop . enum . length > 0 ) {
76
+ exportType = prop . export ;
77
+ realEnums . push ( ...prop . enum ) ;
79
78
} else {
80
79
realProps . push ( prop ) ;
81
80
}
82
81
} ) ;
83
- return realProps ;
82
+ return { realProps, realEnums , exportType } ;
84
83
}
0 commit comments