Adds Deletion

This commit is contained in:
Michel Fedde 2025-03-29 20:15:50 +01:00
parent a0b668cb90
commit 0d9cf6a370
8 changed files with 174 additions and 35 deletions

View file

@ -4,6 +4,8 @@ import Groups, {DBGroup} from "../Database/tables/Groups";
import {DatabaseConnection} from "../Database/DatabaseConnection";
import {CacheType, CacheTypeReducer, Guild, GuildMember, GuildMemberRoleManager} from "discord.js";
import {Nullable} from "../types/Nullable";
import {PlaydateRepository} from "./PlaydateRepository";
import {Container} from "../Container/Container";
export class GroupRepository extends Repository<GroupModel, DBGroup> {
@ -43,12 +45,31 @@ export class GroupRepository extends Repository<GroupModel, DBGroup> {
return dbResult.map((result) => this.convertToModelType(result));
}
public findGroupsByMember(member: GuildMember) {
public findGroupsByMember(member: GuildMember, onlyLeader: boolean = false) {
if (!member) {
throw new Error("Can't find member for guild: none given");
}
return this.findGroupsByRoles(member.guild.id, [...member.roles.cache.keys()])
const groups = this.findGroupsByRoles(member.guild.id, [...member.roles.cache.keys()])
if (!onlyLeader) {
return groups;
}
return groups.filter((group: GroupModel) => {
return group.leader.memberid === member.id;
})
}
public deleteGroup(group: GroupModel): void {
this.delete(group.id);
debugger
const repo = Container.get<PlaydateRepository>(PlaydateRepository.name);
const playdates = repo.findFromGroup(group, true)
playdates.forEach((playdate) => {
repo.delete(playdate.id);
})
}
protected convertToModelType(intermediateModel: DBGroup | undefined): GroupModel {