Skip to content

Commit 8d3f41a

Browse files
committed
Eliminar directorio
1 parent c8ce5c1 commit 8d3f41a

File tree

2 files changed

+60
-49
lines changed

2 files changed

+60
-49
lines changed

src/main/scala/example/controllers/DirectoryController.scala

Lines changed: 55 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class DirectoryController {
160160
Future {
161161
try {
162162
// Deshabilita todos los subdirectorios del directorio especificado
163-
val disableResult = sql"UPDATE directorios SET habilitado = false WHERE id_padre = $idDirectorio"
163+
val disableResult = sql"UPDATE directorios SET habilitado = false WHERE padre_id = $idDirectorio"
164164
.update()
165165

166166
if (disableResult > 0) {
@@ -203,65 +203,73 @@ class DirectoryController {
203203
def borrarDirectorio(id: Int): Future[Either[String, String]] = {
204204
Future {
205205
try {
206-
// Deshabilita el directorio
206+
// Verifica si el directorio existe
207+
val dirExists = sql"SELECT count(*) FROM directorios WHERE id = $id".map(_.int(1)).single()
207208

208-
val disableSubD = sql"UPDATE directorios SET habilitado = false WHERE id = $id".update()
209+
if (dirExists.getOrElse(0) > 0) {
210+
// Deshabilita el directorio
211+
val disableSubD = sql"UPDATE directorios SET habilitado = false WHERE id = $id".update()
209212

210-
if (disableSubD > 0) {
211-
val count = sql"SELECT count(*) FROM directorios WHERE id = $id"
212-
val subD = sql"SELECT * FROM directorios WHERE id = $id"
213-
.map { rs =>
214-
DirectoryModel(
215-
rs.int("id"),
216-
rs.string("nombre"),
217-
rs.string("ruta"),
218-
rs.int("usuarioId"),
219-
rs.double("tamano"),
220-
rs.int("nodoId"),
221-
rs.int("padreId"),
222-
rs.boolean("habilitado"),
223-
rs.int("respaldo_id")
224-
)
225-
}
226-
.list()
213+
if (disableSubD > 0) {
214+
// Verifica si hay archivos en el directorio
215+
val fileCount = sql"SELECT count(*) FROM archivos WHERE directorio_id = $id".map(_.int(1)).single()
227216

228-
for (i <- subD) {
229-
230-
val subid = i.id
231-
232-
// Deshabilita todos los archivos del directorio especificado
233-
val disableResult = sql"UPDATE archivos SET habilitado = false WHERE directorio_id = $subid".update()
234-
if (disableResult > 0) {
235-
// Directorio y su contenido deshabilitados correctamente
236-
Right("Directorio y su contenido deshabilitados correctamente")
217+
if (fileCount.getOrElse(0) > 0) {
218+
// Si hay archivos, intenta deshabilitarlos
219+
val disableResult = sql"UPDATE archivos SET habilitado = false WHERE directorio_id = $id".update()
220+
if (disableResult > 0) {
221+
// Directorio y su contenido deshabilitados correctamente
222+
Right("Directorio y su contenido deshabilitados correctamente")
223+
} else {
224+
// No se encontró el archivo o no se pudo deshabilitar
225+
Left("No se pudo deshabilitar el directorio y su contenido")
226+
}
237227
} else {
238-
// No se encontró el archivo o no se pudo deshabilitar
239-
Left("No se pudo deshabilitar el directorio y su contenido")
228+
// Si no hay archivos, considera la operación exitosa
229+
Right("Directorio y su contenido deshabilitados correctamente")
240230
}
241231

242-
}
232+
// Verifica si existen subdirectorios
233+
val subDirCount = sql"SELECT count(*) FROM directorios WHERE padre_id = $id".map(_.int(1)).single()
243234

244-
// Deshabilita todos los subdirectorios del directorio especificado
235+
if (subDirCount.getOrElse(0) > 0) {
236+
// Si existen subdirectorios, intenta deshabilitarlos
237+
val disableF = sql"UPDATE directorios SET habilitado = false WHERE padre_id = $id".update()
245238

246-
val disableF = sql"UPDATE directorios SET habilitado = false WHERE padre_id = $id".update()
239+
if (disableF > 0) {
240+
// Verifica si hay archivos en los subdirectorios
241+
val subFileCount =
242+
sql"SELECT count(*) FROM archivos WHERE directorio_id IN (SELECT id FROM directorios WHERE padre_id = $id)"
243+
.map(_.int(1))
244+
.single()
247245

248-
if (disableF > 0) {
249-
// Deshabilita todos los archivos del directorio especificado
250-
val disableResult = sql"UPDATE archivos SET habilitado = false WHERE directorio_id = $id".update()
251-
if (disableResult > 0) {
252-
// Directorio y su contenido deshabilitados correctamente
253-
Right("Directorio y su contenido deshabilitados correctamente")
246+
if (subFileCount.getOrElse(0) > 0) {
247+
// Si hay archivos, intenta deshabilitarlos
248+
val disableSubFiles =
249+
sql"UPDATE archivos SET habilitado = false WHERE directorio_id IN (SELECT id FROM directorios WHERE padre_id = $id)"
250+
.update()
251+
if (disableSubFiles > 0) {
252+
Right("Subdirectorios y sus contenidos deshabilitados correctamente")
253+
} else {
254+
Left("No se pudieron deshabilitar los archivos de los subdirectorios")
255+
}
256+
} else {
257+
// Si no hay archivos, considera la operación exitosa
258+
Right("Subdirectorios y sus contenidos deshabilitados correctamente")
259+
}
260+
} else {
261+
Left("No se pudieron deshabilitar los subdirectorios")
262+
}
254263
} else {
255-
// No se encontró el archivo o no se pudo deshabilitar
256-
Left("No se pudo deshabilitar el directorio y su contenido")
264+
// Si no existen subdirectorios, considera la operación exitosa
265+
Right("Directorio deshabilitado, No existen subdirectorios para deshabilitar")
257266
}
258267
} else {
259-
// No se encontraron subdirectorio o no se pudieron deshabilitar
260-
Left("No se pudieron deshabilitar los archivos")
268+
// No se encontraron directorio o no se pudieron deshabilitar
269+
Left("No se pudieron deshabilitar los subdirectorios")
261270
}
262271
} else {
263-
// No se encontraron directorio o no se pudieron deshabilitar
264-
Left("No se pudieron deshabilitar los subdirectorios")
272+
Left("El ID del directorio no existe")
265273
}
266274

267275
} catch {
@@ -271,4 +279,5 @@ class DirectoryController {
271279
}
272280
}
273281
}
282+
274283
}

src/main/scala/example/routes/DirectoryRoute.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class DirectoryRoute(directoryController: DirectoryController) {
7070
}
7171
} ~
7272
path("delete") {
73-
post {
73+
put {
7474
entity(as[Int]) { id =>
7575
val result: Future[Either[String, String]] = directoryController.borrarDirectorio(id)
7676
onSuccess(result) {
@@ -98,11 +98,13 @@ class DirectoryRoute(directoryController: DirectoryController) {
9898
val result: Future[Either[String, String]] =
9999
directoryController.deshabilitarSubdirectorios(directoryId)
100100
onSuccess(result) {
101-
case Right(message) => complete(StatusCodes.OK, message)
102-
case Left(errorMessage) => complete(HttpResponse(StatusCodes.InternalServerError, entity = errorMessage))
101+
case Right(message) => complete(StatusCodes.OK, message)
102+
case Left(errorMessage) =>
103+
complete(HttpResponse(StatusCodes.InternalServerError, entity = errorMessage))
103104
}
104105
}
105106
}
107+
106108
} ~ path("deshabilitarArchivos") {
107109
put {
108110
entity(as[Int]) { directoryId =>

0 commit comments

Comments
 (0)