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,
value: value,
matching_algorithm: matching_algorithm,
is_insensitive: is_insensitive,
is_whitelist: is_whitelist
is_insensitive: is_insensitive === "on",
is_whitelist: is_whitelist === "on"
}
});
}
@ -49,10 +49,38 @@ export const post = async (request: Request, response: Response) => {
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) => {
const { ids } = request.body;
let { ids } = request.body;
const guildId = request.params.guildId;
if (!ids || !Array.isArray(ids)) {
@ -60,6 +88,8 @@ export const del = async (request: Request, response: Response) => {
return;
}
ids = ids.map(id => Number(id));
try {
await prisma.filter.deleteMany({ where: {
id: { in: ids },
@ -82,7 +112,9 @@ export const datatable = async (request: Request, response: Response) => {
request,
response,
prisma.filter,
{ id: "asc" }
[{ updated_at: "desc" }, { id: "asc" }],
{},
{ guild_id: request.params.guildId }
);
};