feat(api): Functional API endpoints for filters

This commit is contained in:
Corban-Lee Jones 2025-05-02 13:42:13 +01:00
parent 2259e3229a
commit e58d7343b1

View File

@ -33,8 +33,8 @@ export const post = async (request: Request, response: Response) => {
guild_id: guildId, guild_id: guildId,
value: value, value: value,
matching_algorithm: matching_algorithm, matching_algorithm: matching_algorithm,
is_insensitive: is_insensitive, is_insensitive: is_insensitive === "on",
is_whitelist: is_whitelist is_whitelist: is_whitelist === "on"
} }
}); });
} }
@ -49,10 +49,38 @@ export const post = async (request: Request, response: Response) => {
response.status(201).json(filter); response.status(201).json(filter);
}; };
export const patch = async () => {} // TODO ... export const patch = async (request: Request, response: Response) => {
const guildId = request.params.guildId;
const { id, name, value, matching_algorithm, is_insensitive, is_whitelist } = request.body;
let filter;
try {
filter = await prisma.filter.update({
where: { id: Number(id) },
data: {
name: name,
guild_id: guildId,
value: value,
matching_algorithm: matching_algorithm,
is_insensitive: is_insensitive === "on",
is_whitelist: is_whitelist === "on"
}
});
}
catch (error) {
console.error(error);
if (error instanceof Prisma.PrismaClientKnownRequestError) {
response.status(500).json({ error: error.message });
return;
}
}
response.status(201).json(filter);
};
export const del = async (request: Request, response: Response) => { export const del = async (request: Request, response: Response) => {
const { ids } = request.body; let { ids } = request.body;
const guildId = request.params.guildId; const guildId = request.params.guildId;
if (!ids || !Array.isArray(ids)) { if (!ids || !Array.isArray(ids)) {
@ -60,6 +88,8 @@ export const del = async (request: Request, response: Response) => {
return; return;
} }
ids = ids.map(id => Number(id));
try { try {
await prisma.filter.deleteMany({ where: { await prisma.filter.deleteMany({ where: {
id: { in: ids }, id: { in: ids },
@ -82,7 +112,9 @@ export const datatable = async (request: Request, response: Response) => {
request, request,
response, response,
prisma.filter, prisma.filter,
{ id: "asc" } [{ updated_at: "desc" }, { id: "asc" }],
{},
{ guild_id: request.params.guildId }
); );
}; };