Newer
Older
iw-project-support / mill-iw-support / example / src / Example.scala
package example

import zio._
import zio.json._

// Simple example class
case class User(id: String, name: String, email: String)

object User {
  // JSON codecs using ZIO JSON
  implicit val encoder: JsonEncoder[User] = DeriveJsonEncoder.gen[User]
  implicit val decoder: JsonDecoder[User] = DeriveJsonDecoder.gen[User]
}

object Example extends ZIOAppDefault {
  
  val program = for {
    _ <- Console.printLine("Starting example application")
    user = User("1", "John Doe", "john@example.com")
    json <- ZIO.succeed(user.toJson)
    _ <- Console.printLine(s"User as JSON: $json")
    parsed <- ZIO.fromEither(json.fromJson[User])
    _ <- Console.printLine(s"Parsed user: $parsed")
  } yield ()
  
  def run = program
}