Skip to content

Commit db9add9

Browse files
committed
added delete call
1 parent 45d8be8 commit db9add9

File tree

3 files changed

+12
-11
lines changed

3 files changed

+12
-11
lines changed

src/main/scala/net/degoes/06-application/db/Persistence.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ object Persistence {
1717
trait Service[R] {
1818
def get(id: Int): TaskR[R, User]
1919
def create(user: User): TaskR[R, User]
20-
def delete(id: Int): TaskR[R, Boolean]
20+
def delete(id: Int): TaskR[R, Unit]
2121
}
2222

2323
/**
@@ -46,12 +46,12 @@ object Persistence {
4646
.transact(tnx)
4747
.foldM(err => Task.fail(err), _ => Task.succeed(user))
4848

49-
def delete(id: Int): Task[Boolean] =
49+
def delete(id: Int): Task[Unit] =
5050
SQL
5151
.delete(id)
5252
.run
5353
.transact(tnx)
54-
.fold(_ => false, _ => true)
54+
.foldM(err => Task.fail(err), _ => Task.succeed(()))
5555
}
5656

5757
object SQL {

src/main/scala/net/degoes/06-application/db/package.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ package object db extends Persistence.Service[Persistence] {
88

99
def get(id: Int): TaskR[Persistence, User] = ZIO.accessM(_.userPersistence.get(id))
1010
def create(user: User): TaskR[Persistence, User] = ZIO.accessM(_.userPersistence.create(user))
11-
def delete(id: Int): TaskR[Persistence, Boolean] = ZIO.accessM(_.userPersistence.delete(id))
11+
def delete(id: Int): TaskR[Persistence, Unit] = ZIO.accessM(_.userPersistence.delete(id))
1212
}

src/main/scala/net/degoes/06-application/http/Api.scala

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package http
33
import data.User
44
import db._
55
import db.Persistence
6-
import io.circe.{Decoder, Encoder}
7-
import org.http4s.{EntityDecoder, EntityEncoder, HttpRoutes}
6+
import io.circe.{ Decoder, Encoder }
7+
import org.http4s.{ EntityDecoder, EntityEncoder, HttpRoutes }
88
import org.http4s.dsl.Http4sDsl
99
import scalaz.zio._
1010
import org.http4s.circe._
@@ -16,20 +16,21 @@ final case class Api[R <: Persistence](rootUri: String) {
1616
type UserTask[A] = TaskR[R, A]
1717

1818
implicit def circeJsonDecoder[A](implicit decoder: Decoder[A]): EntityDecoder[UserTask, A] = jsonOf[UserTask, A]
19-
implicit def circeJsonEncoder[A](implicit decoder: Encoder[A]): EntityEncoder[UserTask, A] = jsonEncoderOf[UserTask, A]
19+
implicit def circeJsonEncoder[A](implicit decoder: Encoder[A]): EntityEncoder[UserTask, A] =
20+
jsonEncoderOf[UserTask, A]
2021

2122
val dsl: Http4sDsl[UserTask] = Http4sDsl[UserTask]
2223
import dsl._
2324

24-
def route: HttpRoutes[UserTask] = {
25-
25+
def route: HttpRoutes[UserTask] =
2626
HttpRoutes.of[UserTask] {
27-
case GET -> Root / IntVar(id) => Ok(get(id))
27+
case GET -> Root / IntVar(id) => get(id).foldM(_ => NotFound(), Ok(_))
2828
case request @ POST -> Root =>
2929
request.decode[User] { user =>
3030
Created(create(user))
3131
}
32+
case DELETE -> Root / IntVar(id) =>
33+
delete(id).foldM(_ => NotFound(), Ok(_))
3234
}
33-
}
3435

3536
}

0 commit comments

Comments
 (0)