diff --git a/library/src/main/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistration.scala b/library/src/main/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistration.scala index 69fb6df..aded15d 100644 --- a/library/src/main/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistration.scala +++ b/library/src/main/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistration.scala @@ -26,6 +26,8 @@ import scala.collection.JavaConverters._ import scala.reflect.runtime.universe._ import OpenAPIModelRegistration._ +import java.sql.Timestamp + class OpenAPIModelRegistration( components: Components, extraTypesHandler: ExtraTypesHandling.ExtraTypesHandler = ExtraTypesHandling.noExtraHandling, @@ -243,6 +245,9 @@ class OpenAPIModelRegistration( case t if t =:= typeOf[LocalDateTime] => OpenAPISimpleType("string", Some("date-time")) case t if t =:= typeOf[LocalDate] => OpenAPISimpleType("string", Some("date")) case t if t =:= typeOf[LocalTime] => OpenAPISimpleType("string", Some("time")) + case t if t =:= typeOf[Timestamp] => OpenAPISimpleType("string", Some("date-time")) + case t if t =:= typeOf[BigDecimal] => OpenAPISimpleType("number") + case t if t =:= typeOf[BigInt] => OpenAPISimpleType("integer") } private def registerAsReference(name: String, schema: Schema[_]): Schema[_] = { diff --git a/library/src/test/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistrationSpec.scala b/library/src/test/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistrationSpec.scala index 7d28dae..11ff79b 100644 --- a/library/src/test/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistrationSpec.scala +++ b/library/src/test/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistrationSpec.scala @@ -18,7 +18,6 @@ package za.co.absa.springdocopenapiscala import io.swagger.v3.oas.models.Components import io.swagger.v3.oas.models.media.Schema - import org.scalatest import org.scalatest.flatspec.AnyFlatSpec @@ -26,9 +25,10 @@ import java.time.{Instant, LocalDate, LocalDateTime, LocalTime, ZonedDateTime} import java.util.UUID import scala.collection.JavaConverters._ import scala.reflect.runtime.universe._ - import za.co.absa.springdocopenapiscala.OpenAPIModelRegistration.ExtraTypesHandling +import java.sql.Timestamp + class OpenAPIModelRegistrationSpec extends AnyFlatSpec { private case class OnlySimpleTypes( @@ -47,7 +47,10 @@ class OpenAPIModelRegistrationSpec extends AnyFlatSpec { o: Instant, p: LocalDateTime, r: LocalDate, - s: LocalTime + s: LocalTime, + t: BigDecimal, + w: BigInt, + z: Timestamp ) private case class SimpleTypesMaybeInOption( @@ -194,6 +197,9 @@ class OpenAPIModelRegistrationSpec extends AnyFlatSpec { assertTypeAndFormatAreAsExpected(actualSchemas, "OnlySimpleTypes.p", "string", Some("date-time")) assertTypeAndFormatAreAsExpected(actualSchemas, "OnlySimpleTypes.r", "string", Some("date")) assertTypeAndFormatAreAsExpected(actualSchemas, "OnlySimpleTypes.s", "string", Some("time")) + assertTypeAndFormatAreAsExpected(actualSchemas, "OnlySimpleTypes.t", "number") + assertTypeAndFormatAreAsExpected(actualSchemas, "OnlySimpleTypes.w", "integer") + assertTypeAndFormatAreAsExpected(actualSchemas, "OnlySimpleTypes.z", "string", Some("date-time")) } it should "mark all non-Option fields of case class as required" in {