feat: add API controller new Feed models
This commit is contained in:
parent
c9c22bd2ac
commit
d03dc8ed90
78
src/server/api/feed.api.ts
Normal file
78
src/server/api/feed.api.ts
Normal 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
15
src/server/prisma.ts
Normal 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;
|
Loading…
x
Reference in New Issue
Block a user