Skip to content

Commit

Permalink
Peticiones del servidor java
Browse files Browse the repository at this point in the history
  • Loading branch information
Jean-Parra committed Oct 6, 2023
1 parent 947af6a commit 83c9f96
Show file tree
Hide file tree
Showing 13 changed files with 91 additions and 56 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
.metals/
.bsp/
.scala-build/
.env

# Ignorar archivos generados por SBT
target/
Expand All @@ -27,4 +28,5 @@ target/

# Ignorar archivos de construcción y configuración personal
build.sbt.local
*.sbt.local
*.sbt.local
src/main/resources/application.conf
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ RUN sbt update
RUN sbt compile

# Exponer el puerto por el que se comunicará la aplicación
EXPOSE 8080
EXPOSE 80

# Definir el comando para ejecutar la aplicación
CMD ["sbt", "run"]
22 changes: 1 addition & 21 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,32 +14,12 @@ services:
volumes:
- db-master-data:/var/lib/mysql
- ./database:/docker-entrypoint-initdb.d

# Configuración del esclavo MariaDB

# db-slave:
# image: mariadb
# command: --init-file /docker-entrypoint-initdb.d/init.sql
# environment:
# MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
# MYSQL_DATABASE: ${MYSQL_DATABASE}
# MYSQL_USER: ${MYSQL_USER}
# MYSQL_PASSWORD: ${MYSQL_PASSWORD}
# depends_on:
# - db-master
# ports:
# - "3307:3306"
# volumes:
# - db-slave-data:/var/lib/mysql
# - ./database:/docker-entrypoint-initdb.d

# Configuración de la aplicación Scala
myproject:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
- "80:80"
depends_on:
- db-master
#- db-slave
Expand Down
30 changes: 20 additions & 10 deletions src/main/scala/example/controllers/DirectoryController.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,14 @@ class DirectoryController {
try {
val directorioOption = sql"SELECT * FROM directorios WHERE id = $id"
.map { rs =>
DirectoryModel(rs.int("id"), rs.string("nombre"), rs.string("ruta"), rs.int("usuario_id"))
DirectoryModel(
rs.int("id"),
rs.string("nombre"),
rs.string("ruta"),
rs.int("usuario_id"),
rs.double("tamano"),
rs.int("nodo_id")
)
}
.single()
.map { directorio =>
Expand All @@ -36,20 +43,23 @@ class DirectoryController {
}
}

def guardarDirectorios(directorios: List[(String, String, Int)]): Future[List[Either[String, DirectoryModel]]] = {
def guardarDirectorios(
directorios: List[(String, String, Int, Double, Int)]
): Future[List[Either[String, DirectoryModel]]] = {
Future.sequence {
directorios.map { case (nombre, ruta, usuario_id) =>
directorios.map { case (nombre, ruta, usuario_id, tamano, nodo_id) =>
Future {
try {
val result = sql"INSERT INTO directorios (nombre, ruta, usuario_id) VALUES ($nombre, $ruta, $usuario_id)"
.update()
val result =
sql"INSERT INTO directorios (nombre, ruta, usuario_id, tamano, nodo_id) VALUES ($nombre, $ruta, $usuario_id, $tamano, $nodo_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 directorio = DirectoryModel(generatedId.toInt, nombre, ruta, usuario_id)
val directorio = DirectoryModel(generatedId.toInt, nombre, ruta, usuario_id, tamano, nodo_id)
Right(directorio)
} else {
Left("No se pudo agregar el directorio")
Expand All @@ -65,24 +75,24 @@ class DirectoryController {
}

def guardarSubDirectorios(
subdirectorios: List[(String, String, Int)]
subdirectorios: List[(String, String, Int, Double, Int)]
): Future[List[Either[String, DirectoryModel]]] = {
Future.sequence {
subdirectorios.map { case (nombre, rutaPadre, usuario_id) =>
subdirectorios.map { case (nombre, rutaPadre, usuario_id, tamano, nodo_id) =>
Future {
try {
val nuevaRuta = s"$rutaPadre/$nombre"

val result =
sql"INSERT INTO directorios (nombre, ruta, usuario_id) VALUES ($nombre, $nuevaRuta, $usuario_id)"
sql"INSERT INTO directorios (nombre, ruta, usuario_id, tamano, nodo_id) VALUES ($nombre, $nuevaRuta, $usuario_id, $tamano, $nodo_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 directorio = DirectoryModel(generatedId.toInt, nombre, nuevaRuta, usuario_id)
val directorio = DirectoryModel(generatedId.toInt, nombre, nuevaRuta, usuario_id, tamano, nodo_id)
Right(directorio)
} else {
Left("No se pudo agregar el sub directorio")
Expand Down
18 changes: 12 additions & 6 deletions src/main/scala/example/controllers/FileController.scala
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ class FileController {
rs.string("ruta"),
rs.double("tamano"),
rs.int("usuario_id"),
rs.boolean("habilitado")
rs.boolean("habilitado"),
rs.int("nodo_id"),
rs.int("directorio_id")
)
}
.single()
Expand All @@ -46,21 +48,23 @@ class FileController {
}
}

def guardarArchivos(archivos: List[(String, String, Double, Int)]): Future[List[Either[String, FileModel]]] = {
def guardarArchivos(
archivos: List[(String, String, Double, Int, Int, Int)]
): Future[List[Either[String, FileModel]]] = {
Future.sequence {
archivos.map { case (nombre, ruta, tamano, usuario_id) =>
archivos.map { case (nombre, ruta, tamano, usuario_id, nodo_id, directorio_id) =>
Future {
try {
val result =
sql"INSERT INTO archivos (nombre, ruta, tamano, usuario_id, habilitado) VALUES ($nombre, $ruta, $tamano, $usuario_id, true)"
sql"INSERT INTO archivos (nombre, ruta, tamano, usuario_id, nodo_id, directorio_id) VALUES ($nombre, $ruta, $tamano, $usuario_id, $nodo_id,$directorio_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 archivo = FileModel(generatedId.toInt, nombre, ruta, tamano, usuario_id, true)
val archivo = FileModel(generatedId.toInt, nombre, ruta, tamano, usuario_id, true, nodo_id, directorio_id)
Right(archivo)
} else {
Left("No se pudo agregar el archivo")
Expand Down Expand Up @@ -177,7 +181,9 @@ class FileController {
rs.string("ruta"),
rs.double("tamano"),
rs.int("usuario_id"),
rs.boolean("habilitado")
rs.boolean("habilitado"),
rs.int("nodo_id"),
rs.int("directorio_id")
)
}
.list()
Expand Down
8 changes: 4 additions & 4 deletions src/main/scala/example/controllers/UserController.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class UserController {
try {
val usuarioOption = sql"SELECT * FROM usuarios WHERE id = $id"
.map { rs =>
UserModel(rs.int("id"), rs.string("nombre"), rs.string("apellido"), rs.boolean("habilitado"))
UserModel(rs.int("auth_id"), rs.string("nombre"), rs.string("apellido"), rs.boolean("habilitado"))
}
.single()
.map { usuario =>
Expand All @@ -36,18 +36,18 @@ class UserController {
}
}

def registrarUsuario(nombre: String, apellido: String): Future[Either[String, UserModel]] = {
def registrarUsuario(auth_id: Int, nombre: String, apellido: String): Future[Either[String, UserModel]] = {
Future {
try {
val result: Int = sql"INSERT INTO usuarios (nombre, apellido, habilitado) VALUES ($nombre, $apellido, true)"
val result: Int = sql"INSERT INTO usuarios (nombre, apellido, auth_id) VALUES ($nombre, $apellido, $auth_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 UserModel con el ID real
val usuario = UserModel(generatedId.toInt, nombre, apellido, true)
val usuario = UserModel(auth_id, nombre, apellido, true)
Right(usuario)
} else {
Left("No se pudo insertar el usuario")
Expand Down
4 changes: 2 additions & 2 deletions src/main/scala/example/main.scala
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ object Main extends App {

val routes: Route = userRoute.route ~ fileRoute.route ~ directoryRoute.route

val bindingFuture = Http().bindAndHandle(routes, "0.0.0.0", 8080)
println(s"Server online at http://207.248.81.126:8080/")
val bindingFuture = Http().bindAndHandle(routes, "0.0.0.0", 80)
println(s"Server online at http://207.248.81.126:80/")

while (true) {
Thread.sleep(10000)
Expand Down
12 changes: 9 additions & 3 deletions src/main/scala/example/models/DirectoryAllModel.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package models

case class DirectoryModel(id: Int, nombre: String, ruta: String, usuarioId: Int)

case class DirectoryCreateModel(nombre: String, ruta: String, usuario_id: Int)
case class DirectoryModel(
id: Int,
nombre: String,
ruta: String,
usuarioId: Int,
tamano: Double,
nodoId: Int
)
case class DirectoryCreateModel(nombre: String, ruta: String, usuario_id: Int, tamano: Double, nodo_id: Int)
20 changes: 18 additions & 2 deletions src/main/scala/example/models/FileAllModel.scala
Original file line number Diff line number Diff line change
@@ -1,9 +1,25 @@
package models

case class FileModel(id: Int, nombre: String, ruta: String, tamano: Double, usuario_id: Int, habilitado: Boolean)
case class FileModel(
id: Int,
nombre: String,
ruta: String,
tamano: Double,
usuario_id: Int,
habilitado: Boolean,
nodo_id: Int,
directorio_id: Int
)

case class FileReportModel(usuario_id: Int, tamano: Double)

case class FileMoveModel(id: Int, nuevaRuta: String)

case class FileCreateModel(nombre: String, ruta: String, tamano: Double, usuario_id: Int)
case class FileCreateModel(
nombre: String,
ruta: String,
tamano: Double,
usuario_id: Int,
nodo_id: Int,
directorio_id: Int
)
4 changes: 2 additions & 2 deletions src/main/scala/example/models/UserAllModel.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package models

case class UserModel(id: Int, nombre: String, apellido: String, habilitado: Boolean)
case class UserModel(auth_id: Int, nombre: String, apellido: String, habilitado: Boolean)

case class UserCreateModel(nombre: String, apellido: String)
case class UserCreateModel(auth_id: Int, nombre: String, apellido: String)
14 changes: 12 additions & 2 deletions src/main/scala/example/routes/DirectoryRoute.scala
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ class DirectoryRoute(directoryController: DirectoryController) {
post {
entity(as[List[DirectoryCreateModel]]) { directories =>
val results: Future[List[Either[String, DirectoryModel]]] = directoryController.guardarDirectorios(
directories.map(directory => (directory.nombre, directory.ruta, directory.usuario_id))
directories.map(directory =>
(directory.nombre, directory.ruta, directory.usuario_id, directory.tamano, directory.nodo_id)
)
)
onSuccess(results) { list =>
val errors = list.collect { case Left(errorMessage) => errorMessage }
Expand All @@ -44,7 +46,15 @@ class DirectoryRoute(directoryController: DirectoryController) {
post {
entity(as[List[DirectoryCreateModel]]) { subDirectories =>
val results: Future[List[Either[String, DirectoryModel]]] = directoryController.guardarSubDirectorios(
subDirectories.map(subDirectory => (subDirectory.nombre, subDirectory.ruta, subDirectory.usuario_id))
subDirectories.map(subDirectory =>
(
subDirectory.nombre,
subDirectory.ruta,
subDirectory.usuario_id,
subDirectory.tamano,
subDirectory.nodo_id
)
)
)
onSuccess(results) { list =>
val errors = list.collect { case Left(errorMessage) => errorMessage }
Expand Down
6 changes: 5 additions & 1 deletion src/main/scala/example/routes/FileRoute.scala
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@ class FileRoute(fileController: FileController) {
post {
entity(as[List[FileCreateModel]]) { files =>
val result: Future[List[Either[String, FileModel]]] =
fileController.guardarArchivos(files.map(file => (file.nombre, file.ruta, file.tamano, file.usuario_id)))
fileController.guardarArchivos(
files.map(file =>
(file.nombre, file.ruta, file.tamano, file.usuario_id, file.nodo_id, file.directorio_id)
)
)
onSuccess(result) { list =>
val errors = list.collect { case Left(errorMessage) => errorMessage }
if (errors.isEmpty) {
Expand Down
3 changes: 2 additions & 1 deletion src/main/scala/example/routes/UserRoute.scala
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ class UserRoute(userController: UserController) {
path("register") {
post {
entity(as[UserCreateModel]) { user =>
val result: Future[Either[String, UserModel]] = userController.registrarUsuario(user.nombre, user.apellido)
val result: Future[Either[String, UserModel]] =
userController.registrarUsuario(user.auth_id, user.nombre, user.apellido)
onSuccess(result) {
case Right(newUser) => complete(StatusCodes.Created, newUser)
case Left(errorMessage) => complete(HttpResponse(StatusCodes.InternalServerError, entity = errorMessage))
Expand Down

0 comments on commit 83c9f96

Please sign in to comment.