Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
dc983df531 | |||
![]() |
0f64322af3 | ||
e5ce27adfd | |||
4134367350 | |||
f65a0d0e22 | |||
e73a2e6e8d |
@ -66,16 +66,18 @@ jobs:
|
||||
- name: Initialize Docker runtime
|
||||
if: env.SKIP_SUBSEQUENT_STEPS != 'true'
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install ca-certificates curl gnupg lsb-release -y
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
sudo apt-get update
|
||||
sudo apt-get install ca-certificates curl
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
||||
|
||||
# Add the repository to Apt sources:
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||||
$(lsb_release -cs) stable" | \
|
||||
tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
apt-get update
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
||||
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
|
||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
sudo apt-get update
|
||||
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin -y
|
||||
|
||||
- name: Download Artifact
|
||||
|
@ -5,7 +5,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = 'de.w665'
|
||||
version = '1.2.0'
|
||||
version = '1.2.1'
|
||||
|
||||
java {
|
||||
sourceCompatibility = '21'
|
||||
@ -39,11 +39,11 @@ dependencies {
|
||||
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security
|
||||
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '3.2.4'
|
||||
// https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api
|
||||
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.12.5'
|
||||
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.12.6'
|
||||
// https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-impl
|
||||
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.12.5'
|
||||
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.12.6'
|
||||
// https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-orgjson
|
||||
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-orgjson', version: '0.12.5'
|
||||
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-orgjson', version: '0.12.6'
|
||||
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.time.Instant;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
|
||||
@Repository
|
||||
@ -52,7 +54,12 @@ public class FileUploadRepository {
|
||||
} catch (NoSuchElementException e) {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
public List<FileUpload> findAll() {
|
||||
return r.db("sharepulse").table("file_uploads")
|
||||
.run(connection, FileUpload.class)
|
||||
.toList();
|
||||
}
|
||||
|
||||
public void updateFileUpload(FileUpload updatedFileUpload) {
|
||||
@ -79,32 +86,24 @@ public class FileUploadRepository {
|
||||
.run(connection);
|
||||
}
|
||||
|
||||
// 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();
|
||||
|
||||
public List<FileUpload> getAllExpiredFileUploads() {
|
||||
long timestamp = getTimestamp24HoursAgo();
|
||||
return r.db("sharepulse").table("file_uploads")
|
||||
.filter(row -> row.g("uploadDate").lt(timestamp))
|
||||
.run(connection, FileUpload.class)
|
||||
.toList();
|
||||
}
|
||||
|
||||
public List<FileUpload> findAll() {
|
||||
return r.db("sharepulse").table("file_uploads")
|
||||
.run(connection, FileUpload.class)
|
||||
.toList();
|
||||
private long getTimestamp24HoursAgo() {
|
||||
Instant now = Instant.now();
|
||||
Instant oneMinuteAgo = now.minus(24, ChronoUnit.HOURS);
|
||||
return oneMinuteAgo.toEpochMilli();
|
||||
}
|
||||
|
||||
private long get24HoursAgoTimestamp() {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.HOUR, -24);
|
||||
return calendar.getTimeInMillis() / 1000;
|
||||
}
|
||||
|
||||
private long getOneMinuteAgoTimestamp() {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.MINUTE, -1); // Subtract 1 minute
|
||||
return calendar.getTimeInMillis() / 1000; // Convert milliseconds to seconds (Unix timestamp)
|
||||
// For testing only
|
||||
private long getTimestampOneMinuteAgo() {
|
||||
Instant now = Instant.now();
|
||||
Instant oneMinuteAgo = now.minus(1, ChronoUnit.MINUTES);
|
||||
return oneMinuteAgo.toEpochMilli();
|
||||
}
|
||||
}
|
@ -23,10 +23,11 @@ public class FileCleanupService {
|
||||
this.fileService = fileService;
|
||||
}
|
||||
|
||||
//@Scheduled(cron = "*/10 * * * * *") // every 10 seconds
|
||||
@Scheduled(cron = "0 0 * * * *")
|
||||
public void cleanup() {
|
||||
log.debug("Running cleanup...");
|
||||
List<FileUpload> expFileUploads = fileUploadRepository.findAllExpiredActiveFileUploads();
|
||||
List<FileUpload> expFileUploads = fileUploadRepository.getAllExpiredFileUploads();
|
||||
for (FileUpload fileUpload : expFileUploads) {
|
||||
fileService.deleteFile(fileUpload);
|
||||
expiredFileUploadRepository.insertExpiredFileUpload(fileUpload);
|
||||
|
Loading…
x
Reference in New Issue
Block a user