From e5389c0e55522698d5ad8b4fa13a4b5ae00250b5 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Sat, 9 Oct 2021 11:49:34 +0300 Subject: [PATCH] perf(savedMessages): save a db lookup and message content decryption by building the returned entity manually after creation --- backend/src/data/GuildSavedMessages.ts | 4 +++- backend/src/data/buildEntity.ts | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 backend/src/data/buildEntity.ts diff --git a/backend/src/data/GuildSavedMessages.ts b/backend/src/data/GuildSavedMessages.ts index 6d1e29c5..0747ca6d 100644 --- a/backend/src/data/GuildSavedMessages.ts +++ b/backend/src/data/GuildSavedMessages.ts @@ -8,6 +8,7 @@ import { MINUTES, SECONDS } from "../utils"; import { BaseGuildRepository } from "./BaseGuildRepository"; import { cleanupMessages } from "./cleanup/messages"; import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage"; +import { buildEntity } from "./buildEntity"; if (!isAPI()) { const CLEANUP_INTERVAL = 5 * MINUTES; @@ -220,7 +221,8 @@ export class GuildSavedMessages extends BaseGuildRepository { throw e; } - const inserted = await this.messages.findOne(data.id); + // perf: save a db lookup and message content decryption by building the entity manually + const inserted = buildEntity(SavedMessage, data); this.events.emit("create", [inserted]); this.events.emit(`create:${data.id}`, [inserted]); } diff --git a/backend/src/data/buildEntity.ts b/backend/src/data/buildEntity.ts new file mode 100644 index 00000000..c174efc4 --- /dev/null +++ b/backend/src/data/buildEntity.ts @@ -0,0 +1,7 @@ +export function buildEntity(Entity: new () => T, data: Partial): T { + const instance = new Entity(); + for (const [key, value] of Object.entries(data)) { + instance[key] = value; + } + return instance; +}