|
1 | 1 | package org.jetbrains.kotlinx.dataframe.io |
2 | 2 |
|
3 | | -import org.jetbrains.kotlinx.dataframe.annotations.DataSchema |
4 | | -import org.jetbrains.kotlinx.dataframe.api.KeyValueProperty |
5 | 3 | import org.jetbrains.kotlinx.dataframe.codeGen.FieldType |
6 | 4 | import org.jetbrains.kotlinx.dataframe.codeGen.Marker |
7 | 5 | import org.jetbrains.kotlinx.dataframe.codeGen.MarkerVisibility |
8 | 6 | import org.jetbrains.kotlinx.dataframe.codeGen.ValidFieldName |
9 | 7 |
|
10 | | -/** |
11 | | - * A [DataSchema] interface can implement this if it represents a map-like data schema (so key: value). |
12 | | - * Used in OpenAPI to represent objects with 'just' additionalProperties of a certain type. |
13 | | - */ |
14 | | -public interface AdditionalProperty<T> : KeyValueProperty<T> { |
15 | | - |
16 | | - /** Key of the property. */ |
17 | | - override val key: String |
18 | | - |
19 | | - /** Value of the property. */ |
20 | | - override val value: T |
21 | | - |
22 | | - public companion object { |
23 | | - internal fun getMarker(typeArguments: List<String>) = |
24 | | - Marker( |
25 | | - name = AdditionalProperty::class.qualifiedName!!, |
26 | | - isOpen = false, |
27 | | - fields = listOf( |
28 | | - generatedFieldOf( |
29 | | - fieldName = ValidFieldName.of(AdditionalProperty<*>::key.name), |
30 | | - columnName = AdditionalProperty<*>::key.name, |
31 | | - overrides = false, |
32 | | - fieldType = FieldType.ValueFieldType(String::class.qualifiedName!!), |
33 | | - ), |
34 | | - generatedFieldOf( |
35 | | - fieldName = ValidFieldName.of(AdditionalProperty<*>::`value`.name), |
36 | | - columnName = AdditionalProperty<*>::`value`.name, |
37 | | - overrides = false, |
38 | | - fieldType = FieldType.ValueFieldType(Any::class.qualifiedName!! + "?"), |
39 | | - ), |
40 | | - ), |
41 | | - superMarkers = emptyList(), |
42 | | - visibility = MarkerVisibility.EXPLICIT_PUBLIC, |
43 | | - typeParameters = emptyList(), |
44 | | - typeArguments = typeArguments, |
45 | | - ) |
46 | | - } |
47 | | -} |
| 8 | +internal fun AdditionalProperty.Companion.getMarker(typeArguments: List<String>) = |
| 9 | + Marker( |
| 10 | + name = AdditionalProperty::class.qualifiedName!!, |
| 11 | + isOpen = false, |
| 12 | + fields = listOf( |
| 13 | + generatedFieldOf( |
| 14 | + fieldName = ValidFieldName.of(AdditionalProperty<*>::key.name), |
| 15 | + columnName = AdditionalProperty<*>::key.name, |
| 16 | + overrides = false, |
| 17 | + fieldType = FieldType.ValueFieldType(String::class.qualifiedName!!), |
| 18 | + ), |
| 19 | + generatedFieldOf( |
| 20 | + fieldName = ValidFieldName.of(AdditionalProperty<*>::`value`.name), |
| 21 | + columnName = AdditionalProperty<*>::`value`.name, |
| 22 | + overrides = false, |
| 23 | + fieldType = FieldType.ValueFieldType(Any::class.qualifiedName!! + "?"), |
| 24 | + ), |
| 25 | + ), |
| 26 | + superMarkers = emptyList(), |
| 27 | + visibility = MarkerVisibility.EXPLICIT_PUBLIC, |
| 28 | + typeParameters = emptyList(), |
| 29 | + typeArguments = typeArguments, |
| 30 | + ) |
0 commit comments