Skip to content

Commit

Permalink
SharedRoutes
Browse files Browse the repository at this point in the history
  • Loading branch information
QuesitoCode committed Oct 9, 2023
1 parent 23117e6 commit c810c8c
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 3 deletions.
23 changes: 20 additions & 3 deletions src/main/scala/example/controllers/SharedController.scala
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class SharedController {
Future {
try {
val result =
sql"INSERT INTO archivos (usuario_id, archivo_id) VALUES ($usuario_id, $archivo_id)"
sql"INSERT INTO compartidos (usuario_id, archivo_id) VALUES ($usuario_id, $archivo_id)"
.update()

if (result > 0) {
Expand Down Expand Up @@ -51,9 +51,26 @@ class SharedController {
Future {
try {
// Realizar la actualización para cambiar el campo "habilitado" a false
val resultado = sql"UPDATE archivos SET habilitado = false WHERE id = $id".update()
val resultado = sql"DELETE from compartido WHERE id = $id".update()

if (resultado > 0) {

val resultadoFuture: Future[Either[String, FileModel]] = obtenerCompartidosPorUsuario(id)

val resultado: Either[String, FileModel] = Await.result(resultadoFuture, 5.seconds)

resultado match {
case Right(fileModel) =>
// Aquí puedes trabajar con el resultado Right (éxito)
// Por ejemplo, imprimir el archivo
println(s"Archivo encontrado: $fileModel")
Right(fileModel)
case Left(errorMessage) =>
// Aquí puedes manejar el caso Left (error)
// Por ejemplo, imprimir el mensaje de error
println(s"Error: $errorMessage")
Left(errorMessage)
}


} else {
Expand All @@ -71,7 +88,7 @@ class SharedController {
def obtenerCompartidosPorUsuario(usuario_id: Int): Future[Either[String, List[SharedModel]]] = {
Future {
try {
val archivos = sql"SELECT * FROM archivos WHERE habilitado = true AND usuario_id = $usuario_id"
val archivos = sql"SELECT * FROM compartido WHERE usuario_id = $usuario_id"
.map { rs =>
SharedModel(
rs.int("id"),
Expand Down
6 changes: 6 additions & 0 deletions src/main/scala/example/models/SharedAllModel.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,10 @@ case class SharedModel(
archivo_id: Int


)case class SharedCreateModel(

usuario_id_id: Int,
archivo_id: Int


)
56 changes: 56 additions & 0 deletions src/main/scala/example/routes/SharedRoute.scala
Original file line number Diff line number Diff line change
@@ -1 +1,57 @@
package routes

import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.Route
import controllers.SharedController
import de.heikoseeberger.akkahttpcirce.FailFastCirceSupport._
import io.circe.generic.auto._
import akka.http.scaladsl.model.{HttpResponse, StatusCodes}
import models.{sharedModel, sharedCreateModel}
import scala.concurrent.Future
import com.typesafe.config.ConfigFactory

class SharedRoute(SharedController: SharedController) {

val route: Route = pathPrefix("shared") {
get {
path(IntNumber) { id =>
val result: Future[Either[String, sharedModel]] = SharedController.buscarUsuario(id)
onSuccess(result) {
case Right(shared) => complete(shared)
case Left(errorMessage) => complete(HttpResponse(StatusCodes.NotFound, entity = errorMessage))
}
}
} ~
path("register") {
post {
entity(as[sharedCreateModel]) { shared =>
val result: Future[Either[String, sharedModel]] =
SharedController.guardarCompartido(shared.usuario_id, archivo_id)
onSuccess(result) {
case Right(newshared) => complete(StatusCodes.Created, newshared)
case Left(errorMessage) => complete(HttpResponse(StatusCodes.InternalServerError, entity = errorMessage))
}
}
}
} ~
path("delete") {
put {
entity(as[List[Int]]) { ids =>
val result: Future[List[Either[String, sharedModel]]] = SharedController.eliminarCompartido(ids)
onSuccess(result) { resultList =>
val errors = resultList.collect { case Left(errorMessage) => errorMessage }
if (errors.isEmpty) {
val shareds = resultList.collect { case Right(shared) => shared }
complete(StatusCodes.OK, shareds)
} else {
complete(HttpResponse(StatusCodes.InternalServerError, entity = errors.mkString(", ")))

}
}
}
}

}

}
}

0 comments on commit c810c8c

Please sign in to comment.