Skip to content

Commit 1241d05

Browse files
committed
Moved message purging into routine
1 parent 0526540 commit 1241d05

File tree

3 files changed

+56
-26
lines changed

3 files changed

+56
-26
lines changed

application/src/main/java/org/togetherjava/tjbot/commands/Features.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.togetherjava.tjbot.commands.tags.TagsCommand;
1616
import org.togetherjava.tjbot.commands.tophelper.TopHelpersCommand;
1717
import org.togetherjava.tjbot.commands.tophelper.TopHelpersMessageListener;
18+
import org.togetherjava.tjbot.commands.tophelper.TopHelpersPurgeMessagesRoutine;
1819
import org.togetherjava.tjbot.db.Database;
1920
import org.togetherjava.tjbot.routines.ModAuditLogRoutine;
2021

@@ -55,6 +56,7 @@ public enum Features {
5556
// Routines
5657
features.add(new ModAuditLogRoutine(database));
5758
features.add(new TemporaryModerationRoutine(jda, actionsStore));
59+
features.add(new TopHelpersPurgeMessagesRoutine(database));
5860

5961
// Message receivers
6062
features.add(new TopHelpersMessageListener(database));

application/src/main/java/org/togetherjava/tjbot/commands/tophelper/TopHelpersMessageListener.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,19 @@
22

33
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
44
import org.jetbrains.annotations.NotNull;
5-
import org.slf4j.Logger;
6-
import org.slf4j.LoggerFactory;
75
import org.togetherjava.tjbot.commands.MessageReceiverAdapter;
86
import org.togetherjava.tjbot.config.Config;
97
import org.togetherjava.tjbot.db.Database;
108

11-
import java.time.Instant;
12-
import java.time.Period;
139
import java.util.regex.Pattern;
1410

1511
import static org.togetherjava.tjbot.db.generated.tables.HelpChannelMessages.HELP_CHANNEL_MESSAGES;
1612

1713
/**
1814
* Listener that receives all sent help messages and puts them into the database for
1915
* {@link TopHelpersCommand} to pick them up.
20-
*
21-
* Also runs a cleanup routine to get rid of old entries. In general, it manages the database data
22-
* to determine top-helpers.
2316
*/
2417
public final class TopHelpersMessageListener extends MessageReceiverAdapter {
25-
private static final Logger logger = LoggerFactory.getLogger(TopHelpersMessageListener.class);
26-
private static final Period DELETE_MESSAGE_RECORDS_AFTER = Period.ofDays(90);
27-
2818
private final Database database;
2919

3020
/**
@@ -44,8 +34,6 @@ public void onMessageReceived(@NotNull GuildMessageReceivedEvent event) {
4434
}
4535

4636
addMessageRecord(event);
47-
// TODO Use a routine that runs every 4 hours for the deletion instead
48-
deleteOldMessageRecords();
4937
}
5038

5139
private void addMessageRecord(@NotNull GuildMessageReceivedEvent event) {
@@ -57,18 +45,4 @@ private void addMessageRecord(@NotNull GuildMessageReceivedEvent event) {
5745
.setSentAt(event.getMessage().getTimeCreated().toInstant())
5846
.insert());
5947
}
60-
61-
private void deleteOldMessageRecords() {
62-
int recordsDeleted =
63-
database.writeAndProvide(context -> context.deleteFrom(HELP_CHANNEL_MESSAGES)
64-
.where(HELP_CHANNEL_MESSAGES.SENT_AT
65-
.lessOrEqual(Instant.now().minus(DELETE_MESSAGE_RECORDS_AFTER)))
66-
.execute());
67-
68-
if (recordsDeleted > 0) {
69-
logger.debug(
70-
"{} old help message records have been deleted because they are older than {}.",
71-
recordsDeleted, DELETE_MESSAGE_RECORDS_AFTER);
72-
}
73-
}
7448
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package org.togetherjava.tjbot.commands.tophelper;
2+
3+
import net.dv8tion.jda.api.JDA;
4+
import org.jetbrains.annotations.NotNull;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
import org.togetherjava.tjbot.commands.Routine;
8+
import org.togetherjava.tjbot.db.Database;
9+
10+
import java.time.Instant;
11+
import java.time.Period;
12+
import java.util.concurrent.TimeUnit;
13+
14+
import static org.togetherjava.tjbot.db.generated.tables.HelpChannelMessages.HELP_CHANNEL_MESSAGES;
15+
16+
/**
17+
* Cleanup routine to get rid of old database top-helper message entries.
18+
*/
19+
public final class TopHelpersPurgeMessagesRoutine implements Routine {
20+
private static final Logger logger =
21+
LoggerFactory.getLogger(TopHelpersPurgeMessagesRoutine.class);
22+
private static final Period DELETE_MESSAGE_RECORDS_AFTER = Period.ofDays(90);
23+
24+
private final Database database;
25+
26+
/**
27+
* Creates a new cleanup routine.
28+
*
29+
* @param database the database that contains the messages to purge
30+
*/
31+
public TopHelpersPurgeMessagesRoutine(@NotNull Database database) {
32+
this.database = database;
33+
}
34+
35+
@Override
36+
public @NotNull Schedule createSchedule() {
37+
return new Schedule(ScheduleMode.FIXED_RATE, 0, 4, TimeUnit.HOURS);
38+
}
39+
40+
@Override
41+
public void runRoutine(@NotNull JDA jda) {
42+
int recordsDeleted =
43+
database.writeAndProvide(context -> context.deleteFrom(HELP_CHANNEL_MESSAGES)
44+
.where(HELP_CHANNEL_MESSAGES.SENT_AT
45+
.lessOrEqual(Instant.now().minus(DELETE_MESSAGE_RECORDS_AFTER)))
46+
.execute());
47+
48+
if (recordsDeleted > 0) {
49+
logger.debug(
50+
"{} old help message records have been deleted because they are older than {}.",
51+
recordsDeleted, DELETE_MESSAGE_RECORDS_AFTER);
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)