better route project structure

This commit is contained in:
Oliver Bryan
2025-12-08 00:59:52 +00:00
parent 01e32a8177
commit b631fbaada
8 changed files with 32 additions and 24 deletions

View File

@@ -37,10 +37,19 @@ export async function updateIssue(id: number, updates: { title?: string; descrip
return await db.update(Issue).set(updates).where(eq(Issue.id, id)).returning();
}
export async function getIssues() {
return await db.select().from(Issue);
}
export async function getIssuesByProject(projectId: number) {
return await db.select().from(Issue).where(eq(Issue.projectId, projectId));
}
export async function getIssueByID(id: number) {
const [issue] = await db.select().from(Issue).where(eq(Issue.id, id));
return issue;
}
export async function getIssueByNumber(projectId: number, number: number) {
const [issue] = await db
.select()

View File

@@ -14,7 +14,7 @@ const main = async () => {
"/issue/create": routes.issueCreate,
"/issue/update": routes.issueUpdate,
"/issue/delete": routes.issueDelete,
"/issues/:projectId": routes.issues,
"/issues/:projectBlob": routes.issuesInProject,
},
});

View File

@@ -1,11 +1,11 @@
import issueCreate from "./issueCreate";
import issueDelete from "./issueDelete";
import issues from "./issues";
import issueUpdate from "./issueUpdate";
import issueCreate from "./issue/create";
import issueDelete from "./issue/delete";
import issueUpdate from "./issue/update";
import issuesInProject from "./issues/[projectBlob]";
export const routes = {
issueCreate,
issueDelete,
issues,
issueUpdate,
issuesInProject,
};

View File

@@ -1,5 +1,5 @@
import type { BunRequest } from "bun";
import { createIssue, getProjectByID, getProjectByBlob } from "../db/queries";
import { createIssue, getProjectByID, getProjectByBlob } from "../../db/queries";
// /issue/create?projectId=1&title=Testing&description=Description
// OR
@@ -28,4 +28,3 @@ export default async function issueCreate(req: BunRequest) {
return Response.json(issue);
}

View File

@@ -1,5 +1,5 @@
import type { BunRequest } from "bun";
import { deleteIssue } from "../db/queries";
import { deleteIssue } from "../../db/queries";
// /issue/delete?id=1
export default async function issueDelete(req: BunRequest) {

View File

@@ -1,5 +1,5 @@
import type { BunRequest } from "bun";
import { updateIssue } from "../db/queries";
import { updateIssue } from "../../db/queries";
// /issue/update?id=1&title=Testing&description=Description
export default async function issueUpdate(req: BunRequest) {

View File

@@ -1,14 +0,0 @@
import type { BunRequest } from "bun";
import { getIssuesByProject, getProjectByBlob } from "../db/queries";
export default async function issues(req: BunRequest<"/issues/:projectId">) {
const { projectId } = req.params;
const project = await getProjectByBlob(projectId);
if (!project) {
return new Response("project not found", { status: 404 });
}
const issues = await getIssuesByProject(project.id);
return Response.json(issues);
}

View File

@@ -0,0 +1,14 @@
import type { BunRequest } from "bun";
import { getIssuesByProject, getProjectByBlob } from "../../db/queries";
export default async function issuesInProject(req: BunRequest<"/issues/:projectBlob">) {
const { projectBlob } = req.params;
const project = await getProjectByBlob(projectBlob);
if (!project) {
return new Response(`project not found: provided ${projectBlob}`, { status: 404 });
}
const issues = await getIssuesByProject(project.id);
return Response.json(issues);
}