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