Skip to content

Commit

Permalink
feat: creates api endpoints specifications
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolasfara committed Aug 9, 2022
1 parent 59fa621 commit 6ff71ab
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def productionStartedHandler[M[_]: Monad: LiftIO: CanRaise[String]](
_ <- writeStockToDB(newStock.toDTO[StockDTO])
yield ()

private def readQuintalsFromDB[M[_]: Monad: LiftIO]: M[RemainingMilkDTO] = ???
private def makeMilkOrder[M[_]: Monad: LiftIO](orderMilkDTO: OrderMilkDTO): M[Unit] = ???
private def readStockFromDB[M[_]: Monad: LiftIO]: M[StockDTO] = ???
private def writeStockToDB[M[_]: Monad: LiftIO](newStock: StockDTO): M[Unit] = ???
private def readQuintalsFromDB[M[_]: Monad: LiftIO]: M[RemainingMilkDTO] = RemainingMilkDTO(10).pure
private def makeMilkOrder[M[_]: Monad: LiftIO](orderMilkDTO: OrderMilkDTO): M[Unit] = ().pure
private def readStockFromDB[M[_]: Monad: LiftIO]: M[StockDTO] = Map("Milk" -> 10.2).pure
private def writeStockToDB[M[_]: Monad: LiftIO](newStock: StockDTO): M[Unit] = ().pure
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package dev.atedeg.mdm.restocking.api.endpoints

import cats.data.{ EitherT, ReaderT }
import cats.effect.IO
import io.circe.generic.auto.*
import org.http4s.HttpRoutes
import sttp.tapir.*
import sttp.tapir.generic.auto.*
import sttp.tapir.json.circe.jsonBody
import sttp.tapir.server.http4s.Http4sServerInterpreter

import dev.atedeg.mdm.restocking.api.{ remaningQuintalsOfMilkHandler, DBClient }
import dev.atedeg.mdm.restocking.api.dto.RemainingMilkDTO
import dev.atedeg.mdm.utils.monads.ServerAction

object RemainingQuintalsOfMilkEndpoint:
private val handler: ServerAction[DBClient, String, RemainingMilkDTO] = remaningQuintalsOfMilkHandler

@SuppressWarnings(Array("org.wartremover.warts.Any"))
val remainingQuintalsOfMilkEndpoint: PublicEndpoint[Unit, String, RemainingMilkDTO, Any] =
endpoint.get
.in("remaining-quintals-of-milk")
.out(jsonBody[RemainingMilkDTO].description("The quintals of milk remaining in stock"))
.errorOut(stringBody)

val remainingQuintalsOfMilkRoute: HttpRoutes[IO] = Http4sServerInterpreter[IO]().toRoutes(
remainingQuintalsOfMilkEndpoint.serverLogic(_ => handler.value.run(DBClient())),
)

0 comments on commit 6ff71ab

Please sign in to comment.