Skip to content

Commit 91029eb

Browse files
committed
fix: hydrate form schema meta
1 parent e0218e0 commit 91029eb

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/main/kotlin/com/ctrlhub/core/datacapture/FormSchemasRouter.kt

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@ package com.ctrlhub.core.datacapture
33
import com.ctrlhub.core.Api
44
import com.ctrlhub.core.api.response.PaginatedList
55
import com.ctrlhub.core.datacapture.response.FormSchema
6+
import com.ctrlhub.core.datacapture.response.FormSchemaMeta
67
import com.ctrlhub.core.extractPaginationFromMeta
78
import com.ctrlhub.core.router.Router
89
import com.ctrlhub.core.router.request.RequestParameters
910
import io.ktor.client.HttpClient
1011
import io.ktor.client.call.body
1112
import kotlinx.serialization.json.*
13+
import java.time.LocalDateTime
14+
import java.time.ZonedDateTime
15+
import java.time.format.DateTimeFormatter
1216

1317
class FormSchemasRouter(httpClient: HttpClient) : Router(httpClient) {
1418

@@ -53,10 +57,26 @@ class FormSchemasRouter(httpClient: HttpClient) : Router(httpClient) {
5357
?: throw IllegalStateException("Missing id")
5458

5559
val rawContent = json.toString()
60+
val isoFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME
61+
62+
val formSchemaMeta = json["meta"]?.jsonObject?.let {
63+
val createdAtStr = it["created_at"]?.jsonPrimitive?.content
64+
val updatedAtStr = it["updated_at"]?.jsonPrimitive?.contentOrNull
65+
66+
FormSchemaMeta(
67+
createdAt = createdAtStr?.let { ZonedDateTime.parse(it, isoFormatter).toLocalDateTime() }
68+
?: throw IllegalStateException("Missing created_at"),
69+
updatedAt = updatedAtStr?.takeIf { it.isNotEmpty() }?.let {
70+
ZonedDateTime.parse(it, isoFormatter).toLocalDateTime()
71+
},
72+
latest = it["latest"]?.jsonPrimitive?.content.orEmpty()
73+
)
74+
}
5675

5776
return FormSchema(
5877
id = id,
59-
rawSchema = rawContent
78+
rawSchema = rawContent,
79+
meta = formSchemaMeta,
6080
)
6181
}
6282

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.ctrlhub.core.datacapture.response
22

3+
import com.fasterxml.jackson.annotation.JsonCreator
4+
import com.fasterxml.jackson.annotation.JsonIgnore
35
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
46
import com.fasterxml.jackson.annotation.JsonProperty
57
import com.github.jasminb.jsonapi.annotations.Meta
@@ -9,14 +11,14 @@ import java.time.LocalDateTime
911
@Type("form-schemas")
1012
data class FormSchema(
1113
val id: String? = null,
12-
val rawSchema: String? = null,
14+
@JsonIgnore val rawSchema: String? = null,
1315
@Meta
1416
var meta: FormSchemaMeta? = null,
1517
)
1618

1719
@JsonIgnoreProperties(ignoreUnknown = true)
18-
data class FormSchemaMeta(
20+
data class FormSchemaMeta @JsonCreator constructor(
1921
@JsonProperty("created_at") var createdAt: LocalDateTime,
20-
@JsonProperty("updated_at") var updatedAt: LocalDateTime,
22+
@JsonProperty("updated_at") var updatedAt: LocalDateTime?,
2123
@JsonProperty("latest") var latest: String,
2224
)

0 commit comments

Comments
 (0)