feat: add API controller new Feed models

This commit is contained in:
Corban-Lee Jones 2025-04-22 23:39:54 +01:00
parent c9c22bd2ac
commit d03dc8ed90
2 changed files with 93 additions and 0 deletions

View File

@ -0,0 +1,78 @@
import { Request, Response } from "express";
import prisma, { Prisma } from "@server/prisma";
export const get = async (request: Request, response: Response) => {
if (!request.query.id) {
response.status(400).json({ error: "missing 'id' query" });
return;
}
const feed = await prisma.feed.findUnique({
where: { id: Number(request.query.id) },
include: { channels: true }
});
if (!feed) {
response.status(404).json({ message: "no result found" });
return;
}
response.json(feed);
};
export const post = async (request: Request, response: Response) => {
const guildId = request.params.guildId;
const { name, url, active, channels } = request.body;
let feed;
try {
feed = await prisma.feed.create({
data: {
name: name,
url: url,
guild_id: guildId,
active: active,
channels: channels
}
});
} catch (error) {
console.error(error);
if (error instanceof Prisma.PrismaClientKnownRequestError) {
response.status(500).json({ error: error.message });
return;
}
}
response.status(201).json(feed);
};
export const patch = async () => {} // TODO ...
export const del = async (request: Request, response: Response) => {
const { ids } = request.body;
const guildId = request.params.guildId;
if (!ids || !Array.isArray(ids)) {
response.status(400).json({ error: "invalid request body" });
return;
}
try {
await prisma.feed.deleteMany({ where: { id: { in: ids } } });
} catch (error) {
console.error(error);
if (error instanceof Prisma.PrismaClientKnownRequestError) {
response.status(500).json({ error: error.message });
return;
}
}
response.status(204).json(null);
};
export const datatable = async () => {
};
export default { get, post, del, datatable };

15
src/server/prisma.ts Normal file
View File

@ -0,0 +1,15 @@
import { PrismaClient, Prisma } from "@server/../../generated/prisma";
const prisma = new PrismaClient();
// const resolvePrismaCodeToHttpCode = (error: Prisma.PrismaClientKnownRequestError) => {
// switch (error.code) {
// case "P2011":
// return 0;
// default:
// throw new Error(`Unhandled prisma error code: '${error.code}'`);
// }
// }
export { Prisma };
export default prisma;