import zio.* import zio.http.* import zio.config.typesafe.TypesafeConfigProvider import api.Routes import _root_.config.{AppConfig as SummerConfig} import db.QuillContext object Main extends ZIOAppDefault { private val banner: String = """ | | | . | `. * | .' | `. ._|_* .' . | . * .' `. * | -------| |------- | . *`.___.' * . | .' |* `. * | .' * | . `. | . | | | S U M M E R C M S |""".stripMargin override val bootstrap: ZLayer[ZIOAppArgs, Any, Any] = Runtime.setConfigProvider(TypesafeConfigProvider.fromResourcePath()) override def run: ZIO[Any, Any, Any] = for { cfg <- ZIO.config[SummerConfig](SummerConfig.config) _ <- Console.printLine(banner) _ <- Console.printLine(s"Starting on port ${cfg.server.port}...") _ <- Console.printLine("") // Note: Migrations are NOT auto-run. Use CLI to run migrations (Phase 5). _ <- Server.serve(Routes.routes).provide( Server.defaultWithPort(cfg.server.port), QuillContext.dataSourceLayer ) } yield () }