Scala Code Generation

paradox generate --scala [--path PATH]

Product Types

Input:

type Person
  name: Text
  age: Integer
  admin: Boolean

Output:

case class Person(
  name: String,
  age: Long,
  admin: Boolean
)

Products become Scala 3 case classes.

Validators

def validatePerson(x: Person): Either[String, Person] =
  val errors = List.newBuilder[String]
  val result = errors.result()
  if result.nonEmpty then Left(result.mkString("; "))
  else Right(x)

Validators return Either[String, Person].

Type Mapping

Paradox Scala

Integer

Long

Text

String

Boolean

Boolean

Double

Double

[T]

List[T]

{T}

Set[T]

T?

Option[T]

Union Types

Unions become Scala 3 enums with case classes for payload variants.