perf(savedMessages): save a db lookup and message content decryption by building the returned entity manually after creation
This commit is contained in:
parent
f582640e8e
commit
e5389c0e55
2 changed files with 10 additions and 1 deletions
|
@ -8,6 +8,7 @@ import { MINUTES, SECONDS } from "../utils";
|
||||||
import { BaseGuildRepository } from "./BaseGuildRepository";
|
import { BaseGuildRepository } from "./BaseGuildRepository";
|
||||||
import { cleanupMessages } from "./cleanup/messages";
|
import { cleanupMessages } from "./cleanup/messages";
|
||||||
import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage";
|
import { ISavedMessageData, SavedMessage } from "./entities/SavedMessage";
|
||||||
|
import { buildEntity } from "./buildEntity";
|
||||||
|
|
||||||
if (!isAPI()) {
|
if (!isAPI()) {
|
||||||
const CLEANUP_INTERVAL = 5 * MINUTES;
|
const CLEANUP_INTERVAL = 5 * MINUTES;
|
||||||
|
@ -220,7 +221,8 @@ export class GuildSavedMessages extends BaseGuildRepository {
|
||||||
throw e;
|
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", [inserted]);
|
||||||
this.events.emit(`create:${data.id}`, [inserted]);
|
this.events.emit(`create:${data.id}`, [inserted]);
|
||||||
}
|
}
|
||||||
|
|
7
backend/src/data/buildEntity.ts
Normal file
7
backend/src/data/buildEntity.ts
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
export function buildEntity<T extends any>(Entity: new () => T, data: Partial<T>): T {
|
||||||
|
const instance = new Entity();
|
||||||
|
for (const [key, value] of Object.entries(data)) {
|
||||||
|
instance[key] = value;
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue