3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-18 15:00:00 +00:00
zeppelin/backend/src/data/GuildAntiraidLevels.ts
2020-09-15 00:59:46 +03:00

45 lines
1.2 KiB
TypeScript

import { BaseGuildRepository } from "./BaseGuildRepository";
import { getRepository, Repository } from "typeorm";
import { AntiraidLevel } from "./entities/AntiraidLevel";
export class GuildAntiraidLevels extends BaseGuildRepository {
protected antiraidLevels: Repository<AntiraidLevel>;
constructor(guildId: string) {
super(guildId);
this.antiraidLevels = getRepository(AntiraidLevel);
}
async get() {
const row = await this.antiraidLevels.findOne({
where: {
guild_id: this.guildId,
},
});
return row?.level ?? null;
}
async set(level: string | null) {
if (level === null) {
await this.antiraidLevels.delete({
guild_id: this.guildId,
});
} else {
// Upsert: https://stackoverflow.com/a/47064558/316944
// But the MySQL version: https://github.com/typeorm/typeorm/issues/1090#issuecomment-634391487
await this.antiraidLevels
.createQueryBuilder()
.insert()
.values({
guild_id: this.guildId,
level,
})
.orUpdate({
conflict_target: ["guild_id"],
overwrite: ["level"],
})
.execute();
}
}
}