diff --git a/DOCUMENT.md b/DOCUMENT.md index 912040e..ce6f4cc 100644 --- a/DOCUMENT.md +++ b/DOCUMENT.md @@ -16,6 +16,12 @@ - /group - [/list](#get-usergrouplist) +## データタイプ + +| 名前 | 内容 | 説明 | +|-----|------|-----| +| Date | `yyyy/MM/dd HH:mm:ss` | 日付 | + ## `GET` `/auth` ログインできているか確認する。 diff --git a/src/main/kotlin/com/kokasai/api/form/FormDefineFile.kt b/src/main/kotlin/com/kokasai/api/form/FormDefineFile.kt new file mode 100644 index 0000000..1a3c568 --- /dev/null +++ b/src/main/kotlin/com/kokasai/api/form/FormDefineFile.kt @@ -0,0 +1,43 @@ +package com.kokasai.api.form + +import com.kokasai.api.util.serialize.DateSerializer +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import java.util.Date + +@Serializable +data class FormDefineFile( + val name: String, + val description: String, + @Serializable(with = DateSerializer::class) val receive: Date, + @Serializable(with = DateSerializer::class) val limit: Date, + val values: Map, + val group: List +) + +@Serializable +data class FormDefineValue( + val name: String, + val description: String, + val type: FormDefineType +) + +@Serializable +sealed class FormDefineType { + @Serializable + @SerialName("string") + object String : FormDefineType() { + const val name = "string" + } + + @Serializable + @SerialName("check") + data class Check( + val element: Map, + val limit: Int + ) : FormDefineType() { + companion object { + const val name = "check" + } + } +} diff --git a/src/main/kotlin/com/kokasai/api/form/FormGetFile.kt b/src/main/kotlin/com/kokasai/api/form/FormGetFile.kt new file mode 100644 index 0000000..5553529 --- /dev/null +++ b/src/main/kotlin/com/kokasai/api/form/FormGetFile.kt @@ -0,0 +1,25 @@ +package com.kokasai.api.form + +import com.kokasai.api.util.serialize.DateSerializer +import kotlinx.serialization.Serializable +import java.util.Date + +@Serializable +data class FormGetFile( + val name: String, + val description: String, + @Serializable(with = DateSerializer::class) val receive: Date, + @Serializable(with = DateSerializer::class) val limit: Date, + val values: Map, + val comment: String, + val status: Int +) + +@Serializable +data class FormGetValue( + val name: String, + val description: String, + val type: FormDefineType, + val value: FormSaveValue, + val comment: String +) diff --git a/src/main/kotlin/com/kokasai/api/form/FormResponseFile.kt b/src/main/kotlin/com/kokasai/api/form/FormResponseFile.kt new file mode 100644 index 0000000..6940026 --- /dev/null +++ b/src/main/kotlin/com/kokasai/api/form/FormResponseFile.kt @@ -0,0 +1,10 @@ +package com.kokasai.api.form + +import kotlinx.serialization.Serializable + +@Serializable +data class FormResponseFile( + val values: Map, + val comment: String, + val status: Int +) diff --git a/src/main/kotlin/com/kokasai/api/form/FormSaveFile.kt b/src/main/kotlin/com/kokasai/api/form/FormSaveFile.kt new file mode 100644 index 0000000..c14aa83 --- /dev/null +++ b/src/main/kotlin/com/kokasai/api/form/FormSaveFile.kt @@ -0,0 +1,28 @@ +package com.kokasai.api.form + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class FormSaveFile( + val values: Map, + val comment: String, + val status: Int +) + +@Serializable +data class FormSaveValue( + val value: FormSaveType, + val comment: String +) + +@Serializable +sealed class FormSaveType { + @Serializable + @SerialName("string") + data class String(val content: kotlin.String) + + @Serializable + @SerialName("check") + data class Check(val select: List) +} diff --git a/src/main/kotlin/com/kokasai/api/form/FormSubmitFile.kt b/src/main/kotlin/com/kokasai/api/form/FormSubmitFile.kt new file mode 100644 index 0000000..c4bafb4 --- /dev/null +++ b/src/main/kotlin/com/kokasai/api/form/FormSubmitFile.kt @@ -0,0 +1,8 @@ +package com.kokasai.api.form + +import kotlinx.serialization.Serializable + +@Serializable +data class FormSubmitFile( + val values: Map +) diff --git a/src/main/kotlin/com/kokasai/api/util/serialize/DateSerializer.kt b/src/main/kotlin/com/kokasai/api/util/serialize/DateSerializer.kt new file mode 100644 index 0000000..bb81de2 --- /dev/null +++ b/src/main/kotlin/com/kokasai/api/util/serialize/DateSerializer.kt @@ -0,0 +1,29 @@ +package com.kokasai.api.util.serialize + +import kotlinx.serialization.KSerializer +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import java.text.SimpleDateFormat +import java.util.Date + +class DateSerializer : KSerializer { + override val descriptor: SerialDescriptor by lazy { + PrimitiveSerialDescriptor( + DateSerializer::class.qualifiedName!!, + PrimitiveKind.STRING + ) + } + + private val formatter = SimpleDateFormat("yyyy/MM/dd HH:mm:ss") + + override fun serialize(encoder: Encoder, value: Date) { + encoder.encodeString(formatter.format(value)) + } + + override fun deserialize(decoder: Decoder): Date { + return formatter.parse(decoder.decodeString()) + } +}