Skip to content

Commit 247aa2f

Browse files
committed
added examples and formats for ISO DateTime
1 parent f22b947 commit 247aa2f

File tree

2 files changed

+51
-4
lines changed

2 files changed

+51
-4
lines changed

src/main/kotlin/com/papsign/ktor/openapigen/schema/builder/provider/DefaultPrimitiveSchemaProvider.kt

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.papsign.ktor.openapigen.schema.builder.SchemaBuilder
1313
import java.io.InputStream
1414
import java.math.BigDecimal
1515
import java.math.BigInteger
16-
import java.time.Instant
16+
import java.time.*
1717
import java.util.*
1818
import kotlin.reflect.KType
1919

@@ -33,9 +33,9 @@ object DefaultPrimitiveSchemaProvider: SchemaBuilderProviderModule, OpenAPIGenMo
3333
)
3434
}
3535

36-
inline operator fun <reified T> invoke(type: DataType, format: DataFormat? = null): Builder {
36+
inline operator fun <reified T> invoke(type: DataType, format: DataFormat? = null, pattern: String? = null, example: T? = null): Builder {
3737
return Builder(
38-
SchemaModel.SchemaModelLitteral<T>(type, format)
38+
SchemaModel.SchemaModelLitteral<T>(type, format, pattern = pattern, example = example)
3939
)
4040
}
4141
}
@@ -74,9 +74,40 @@ object DefaultPrimitiveSchemaProvider: SchemaBuilderProviderModule, OpenAPIGenMo
7474
Builder<BigDecimal>(
7575
DataType.number
7676
),
77+
Builder<LocalDate>(
78+
DataType.string,
79+
DataFormat.date,
80+
example = LocalDate.now()
81+
),
82+
Builder<LocalTime>(
83+
DataType.string,
84+
pattern = "HH:mm:ss",
85+
example = LocalTime.now()
86+
),
87+
Builder<OffsetTime>(
88+
DataType.string,
89+
pattern = "HH:mm:ss+XXX",
90+
example = OffsetTime.now()
91+
),
92+
Builder<LocalDateTime>(
93+
DataType.string,
94+
DataFormat.`date-time`,
95+
example = LocalDateTime.now()
96+
),
97+
Builder<OffsetDateTime>(
98+
DataType.string,
99+
DataFormat.`date-time`,
100+
example = OffsetDateTime.now()
101+
),
102+
Builder<ZonedDateTime>(
103+
DataType.string,
104+
DataFormat.`date-time`,
105+
example = ZonedDateTime.now()
106+
),
77107
Builder<Instant>(
78108
DataType.string,
79-
DataFormat.`date-time`
109+
DataFormat.`date-time`,
110+
example = Instant.now()
80111
),
81112
Builder<Date>(
82113
DataType.string,

src/test/kotlin/TestServer.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,17 @@ object TestServer {
286286
}
287287
}
288288
}
289+
route("local-time") {
290+
get<LocalTimeQuery, LocalTimeResponse> { params ->
291+
respond(LocalTimeResponse(params.time))
292+
}
293+
}
294+
route("offset-time") {
295+
get<OffsetTimeQuery, OffsetTimeResponse> { params ->
296+
respond(OffsetTimeResponse(params.time))
297+
}
298+
}
299+
289300
route("local-date-time") {
290301
get<LocalDateTimeQuery, LocalDateTimeResponse> { params ->
291302
respond(LocalDateTimeResponse(params.date))
@@ -391,9 +402,14 @@ object TestServer {
391402
data class ZonedDateTimeQuery(@QueryParam("OffsetDateTime") val date: ZonedDateTime)
392403
data class InstantQuery(@QueryParam("Instant") val date: Instant)
393404

405+
data class LocalTimeQuery(@QueryParam("LocalTime") val time: LocalTime)
406+
data class OffsetTimeQuery(@QueryParam("OffsetTime") val time: OffsetTime)
407+
394408
data class LocalDateResponse(val date: LocalDate?)
395409
data class LocalDateTimeResponse(val date: LocalDateTime?)
396410
data class OffsetDateTimeResponse(val date: OffsetDateTime?)
397411
data class ZonedDateTimeResponse(val date: ZonedDateTime?)
398412
data class InstantResponse(val instant: Instant)
413+
data class LocalTimeResponse(val time: LocalTime?)
414+
data class OffsetTimeResponse(val time: OffsetTime?)
399415
}

0 commit comments

Comments
 (0)