feat: use webhooks for logs when possible

This commit is contained in:
Dragory 2021-11-02 19:59:30 +02:00
parent 1081d1b361
commit 55a39e0758
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
12 changed files with 318 additions and 29 deletions

View file

@ -0,0 +1,37 @@
import { getRepository, Repository } from "typeorm";
import { Webhook } from "./entities/Webhook";
import { BaseRepository } from "./BaseRepository";
import { decrypt, encrypt } from "../utils/crypt";
export class Webhooks extends BaseRepository {
repository: Repository<Webhook> = getRepository(Webhook);
protected async _processEntityFromDB(entity) {
entity.token = await decrypt(entity.token);
return entity;
}
protected async _processEntityToDB(entity) {
entity.token = await encrypt(entity.token);
return entity;
}
async findByChannelId(channelId: string): Promise<Webhook | null> {
const result = await this.repository.findOne({
where: {
channel_id: channelId,
},
});
return result ? this.processEntityFromDB(result) : null;
}
async create(data: Partial<Webhook>): Promise<void> {
data = await this.processEntityToDB(data);
await this.repository.insert(data);
}
async delete(id: string): Promise<void> {
await this.repository.delete({ id });
}
}

View file

@ -0,0 +1,14 @@
import { Column, Entity, PrimaryColumn } from "typeorm";
@Entity("webhooks")
export class Webhook {
@Column()
@PrimaryColumn()
id: string;
@Column() guild_id: string;
@Column() channel_id: string;
@Column() token: string;
}