Reduce retention period of saved messages from 1 week to 5 days

Step 1 of a multi-step change to reduce the retention period to 1-3 days
to save database space.
This commit is contained in:
Dragory 2019-04-20 19:24:28 +03:00
parent 7b00dc8498
commit f6e487d073

View file

@ -7,7 +7,7 @@ import moment from "moment-timezone";
const CLEANUP_INTERVAL = 5 * 60 * 1000; const CLEANUP_INTERVAL = 5 * 60 * 1000;
const RETENTION_PERIOD = 7 * 24 * 60 * 60 * 1000; // 1 week const RETENTION_PERIOD = 5 * 24 * 60 * 60 * 1000; // 5 days
export class GuildSavedMessages extends BaseRepository { export class GuildSavedMessages extends BaseRepository {
private messages: Repository<SavedMessage>; private messages: Repository<SavedMessage>;
@ -30,10 +30,10 @@ export class GuildSavedMessages extends BaseRepository {
const data: ISavedMessageData = { const data: ISavedMessageData = {
author: { author: {
username: msg.author.username, username: msg.author.username,
discriminator: msg.author.discriminator discriminator: msg.author.discriminator,
}, },
content: msg.content, content: msg.content,
timestamp: msg.timestamp timestamp: msg.timestamp,
}; };
if (msg.attachments.length) data.attachments = msg.attachments; if (msg.attachments.length) data.attachments = msg.attachments;
@ -53,7 +53,7 @@ export class GuildSavedMessages extends BaseRepository {
new Brackets(qb2 => { new Brackets(qb2 => {
qb2.where("deleted_at IS NOT NULL"); qb2.where("deleted_at IS NOT NULL");
qb2.andWhere(`deleted_at <= (NOW() - INTERVAL ${CLEANUP_INTERVAL}000 MICROSECOND)`); qb2.andWhere(`deleted_at <= (NOW() - INTERVAL ${CLEANUP_INTERVAL}000 MICROSECOND)`);
}) }),
); );
// Clear old messages // Clear old messages
@ -61,9 +61,9 @@ export class GuildSavedMessages extends BaseRepository {
new Brackets(qb2 => { new Brackets(qb2 => {
qb2.where("is_permanent = 0"); qb2.where("is_permanent = 0");
qb2.andWhere(`posted_at <= (NOW() - INTERVAL ${RETENTION_PERIOD}000 MICROSECOND)`); qb2.andWhere(`posted_at <= (NOW() - INTERVAL ${RETENTION_PERIOD}000 MICROSECOND)`);
}) }),
); );
}) }),
) )
.delete() .delete()
.execute(); .execute();
@ -160,7 +160,7 @@ export class GuildSavedMessages extends BaseRepository {
user_id: msg.author.id, user_id: msg.author.id,
is_bot: msg.author.bot, is_bot: msg.author.bot,
data: savedMessageData, data: savedMessageData,
posted_at: postedAt posted_at: postedAt,
}; };
return this.create({ ...data, ...overrides }); return this.create({ ...data, ...overrides });
@ -171,7 +171,7 @@ export class GuildSavedMessages extends BaseRepository {
.createQueryBuilder("messages") .createQueryBuilder("messages")
.update() .update()
.set({ .set({
deleted_at: () => "NOW(3)" deleted_at: () => "NOW(3)",
}) })
.where("guild_id = :guild_id", { guild_id: this.guildId }) .where("guild_id = :guild_id", { guild_id: this.guildId })
.andWhere("id = :id", { id }) .andWhere("id = :id", { id })
@ -221,8 +221,8 @@ export class GuildSavedMessages extends BaseRepository {
await this.messages.update( await this.messages.update(
{ id }, { id },
{ {
data: newData data: newData,
} },
); );
this.events.emit("update", [newMessage, oldMessage]); this.events.emit("update", [newMessage, oldMessage]);
@ -240,8 +240,8 @@ export class GuildSavedMessages extends BaseRepository {
await this.messages.update( await this.messages.update(
{ id }, { id },
{ {
is_permanent: true is_permanent: true,
} },
); );
} else { } else {
this.toBePermanent.add(id); this.toBePermanent.add(id);