Allow deletion of caps
This commit is contained in:
parent
6e5cc06d31
commit
b094762297
@ -120,6 +120,19 @@ extension CapServer {
|
||||
}
|
||||
return try encoder.encode(cap)
|
||||
}
|
||||
|
||||
// Delete a cap completely, with all images
|
||||
app.postCatching("delete", ":cap") { request in
|
||||
guard let cap = request.parameters.get("cap", as: Int.self) else {
|
||||
log("/delete/:cap/: Invalid 'cap' parameter for image deletion")
|
||||
throw Abort(.badRequest)
|
||||
}
|
||||
try self.ensureOperability()
|
||||
try authenticator.authorize(request)
|
||||
guard self.delete(cap: cap) else {
|
||||
throw Abort(.gone)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -504,6 +504,39 @@ final class CapServer {
|
||||
organizeImages(for: cap)
|
||||
return caps[capId]!
|
||||
}
|
||||
|
||||
func delete(cap capId: Int) -> Bool {
|
||||
guard caps[capId] != nil else {
|
||||
log("Attempting to delete unknown cap \(capId)")
|
||||
return false
|
||||
}
|
||||
// 1. Remove all images
|
||||
do {
|
||||
let imageFolderUrl = folder(of: capId)
|
||||
if exists(imageFolderUrl) {
|
||||
try fm.removeItem(at: imageFolderUrl)
|
||||
}
|
||||
} catch {
|
||||
log("Failed to delete image folder of cap \(capId): \(error)")
|
||||
return false
|
||||
}
|
||||
// 2. Remove thumbnail
|
||||
do {
|
||||
let url = thumbnail(of: capId)
|
||||
if exists(url) {
|
||||
try fm.removeItem(at: url)
|
||||
}
|
||||
} catch {
|
||||
log("Failed to delete thumbnail of cap \(capId): \(error)")
|
||||
return false
|
||||
}
|
||||
|
||||
// 3. Remove cap
|
||||
caps[capId] = nil
|
||||
saveCapCountHTML()
|
||||
updateGridCapCount()
|
||||
return true
|
||||
}
|
||||
|
||||
// MARK: Classifier
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user