Skip to content

Commit

Permalink
SharedController/Model
Browse files Browse the repository at this point in the history
Se agregó el modelo, el metodo para registrar un archivo comparitdo y buscar los arcihos compartiso para un usuario.  Aún con posibles cambios
  • Loading branch information
QuesitoCode committed Oct 7, 2023
1 parent 83c9f96 commit d1d9c57
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 0 deletions.
93 changes: 93 additions & 0 deletions src/main/scala/example/controllers/SharedController.scala
Original file line number Diff line number Diff line change
@@ -1 +1,94 @@
//val resultado = sql"INSERT INTO compartidos (archivo_id, usuario_id) VALUES ($idArchivo, $idUsuario)"
package controllers

import scalikejdbc._
import models.{SharedModel, FileReportModel}

import io.circe._
import io.circe.generic.auto._
import io.circe.syntax._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Await
import scala.concurrent.duration._

class FileController {
implicit val session: DBSession = AutoSession

def guardarCompartido(
archivos: List[( Int, Int, Int)]
): Future[List[Either[String, SharedModel]]] = {
Future.sequence {
archivos.map { case (usuario_id, archivo_id) =>
Future {
try {
val result =
sql"INSERT INTO archivos (usuario_id, archivo_id) VALUES ($usuario_id, $archivo_id)"
.update()

if (result > 0) {
// Recupera el ID generado por la base de datos
val generatedId: Long = sql"SELECT LAST_INSERT_ID()".map(rs => rs.long(1)).single().getOrElse(0L)

// Crea una instancia de DirectoryModel con el ID real
val comparitdo = SharedModelModel(generatedId.toInt, usuario_id, archivo_id)
Right(comparitdo)
} else {
Left("No se pudo agregar el compartido")
}
} catch {
case e: Exception =>
println(s"Error interno del servidor: ${e.getMessage}")
Left("Error interno del servidor")
}
}
}
}
}


def eliminarCompartido(id: Int): Future[Either[String, SharedModel]] = {
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()

if (resultado > 0) {


} else {
// La actualización no afectó ninguna fila, devolver un mensaje de error
Left("No se pudo eliminar el archivo, ID no encontrado o ya está deshabilitado")
}
} catch {
case e: Exception =>
println(s"Error interno del servidor: ${e.getMessage}")
Left("Error interno del servidor")
}
}
}

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"
.map { rs =>
SharedModel(
rs.int("id"),
rs.int("usuario_id"),
rs.int("archivo_id")
)
}
.list()

// Respuesta exitosa con estado 200 y lista de archivos
Right(archivos)
} catch {
case e: Exception =>
println(s"Error interno del servidor: ${e.getMessage}") // Imprime detalles del error
Left("Error interno del servidor")
}
}
}

}
9 changes: 9 additions & 0 deletions src/main/scala/example/models/SharedAllModel.scala
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
package models

case class SharedModel(

id: Int,
usuario_id_id: Int,
archivo_id: Int


)

0 comments on commit d1d9c57

Please sign in to comment.