Added repository methods for fetching all entries of table

- Added disabled attribute to FileUpload
- Added disabled check to FileSecurityService
This commit is contained in:
Max W. 2024-05-30 12:02:13 +02:00
parent 544523764b
commit 5df2e1a705
7 changed files with 45 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
@Repository
@ -38,4 +39,17 @@ public class ExpiredFileUploadRepository {
r.db("sharepulse").table("expired_file_uploads").insert(map).run(connection);
}
public void deleteExpiredFileUpload(FileUpload fileUpload) {
r.db("sharepulse").table("expired_file_uploads")
.filter(r.hashMap("fileId", fileUpload.getFileId()))
.delete()
.run(connection);
}
public List<FileUpload> findAll() {
return r.db("sharepulse").table("expired_file_uploads")
.run(connection, FileUpload.class)
.toList();
}
}

View File

@ -79,7 +79,8 @@ public class FileUploadRepository {
.run(connection);
}
public List<FileUpload> getAllExpiredFileUploads() {
// This query filters all file uploads that are older than 24 hours from the file_uplaods table (not the expired_file_uploads table)
public List<FileUpload> findAllExpiredActiveFileUploads() {
long timestamp = getOneMinuteAgoTimestamp();
@ -89,6 +90,12 @@ public class FileUploadRepository {
.toList();
}
public List<FileUpload> findAll() {
return r.db("sharepulse").table("file_uploads")
.run(connection, FileUpload.class)
.toList();
}
private long get24HoursAgoTimestamp() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR, -24);

View File

@ -18,6 +18,7 @@ public class FileUpload {
private String fileName;
private long fileSize;
private boolean singleDownload;
private boolean disabled;
@JsonFormat(timezone = "ETC")
private Date uploadDate;
private String uploadedByIpAddress;

View File

@ -1,5 +1,7 @@
package de.w665.sharepulse.rest.mappings;
import de.w665.sharepulse.db.repo.FileUploadRepository;
import de.w665.sharepulse.model.FileUpload;
import de.w665.sharepulse.rest.SecureApiRestController;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@ -8,13 +10,28 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Slf4j
@RestController
public class UploadHistory extends SecureApiRestController {
private final FileUploadRepository fileUploadRepository;
public UploadHistory(FileUploadRepository fileUploadRepository) {
this.fileUploadRepository = fileUploadRepository;
}
@GetMapping("/test")
public ResponseEntity<Object> test(HttpServletRequest request) {
log.debug("Received test request");
return ResponseEntity.ok("Test successful");
}
@GetMapping("/upload-history")
public ResponseEntity<Object> getUploadHistory(HttpServletRequest request, HttpServletResponse response) {
List<FileUpload> fileUploadList = fileUploadRepository.findAll();
log.debug("Received upload history request");
return ResponseEntity.ok(fileUploadList);
}
}

View File

@ -26,7 +26,7 @@ public class FileCleanupService {
@Scheduled(cron = "0 0 * * * *")
public void cleanup() {
log.debug("Running cleanup...");
List<FileUpload> expFileUploads = fileUploadRepository.getAllExpiredFileUploads();
List<FileUpload> expFileUploads = fileUploadRepository.findAllExpiredActiveFileUploads();
for (FileUpload fileUpload : expFileUploads) {
fileService.deleteFile(fileUpload);
expiredFileUploadRepository.insertExpiredFileUpload(fileUpload);

View File

@ -21,6 +21,9 @@ public class FileSecurityService {
public boolean verifyDownloadPermission(FileUpload file, String password) throws NoDownloadPermissionException {
if(file.isDisabled()) {
throw new NoDownloadPermissionException("File download has been disabled.");
}
if (!file.isPasswordProtected() && !file.isSingleDownload()) {
return true;

View File

@ -85,6 +85,7 @@ public class FileService {
.fileName(file.getOriginalFilename())
.fileSize(file.getSize())
.singleDownload(singleDownload)
.disabled(false)
.uploadDate(new Date())
.uploadedByIpAddress(uploaderIp)
.downloadCount(0)