mirror of
https://github.com/hex248/sprint.git
synced 2026-02-08 02:33:01 +00:00
better route project structure
This commit is contained in:
@@ -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();
|
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) {
|
export async function getIssuesByProject(projectId: number) {
|
||||||
return await db.select().from(Issue).where(eq(Issue.projectId, projectId));
|
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) {
|
export async function getIssueByNumber(projectId: number, number: number) {
|
||||||
const [issue] = await db
|
const [issue] = await db
|
||||||
.select()
|
.select()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ const main = async () => {
|
|||||||
"/issue/create": routes.issueCreate,
|
"/issue/create": routes.issueCreate,
|
||||||
"/issue/update": routes.issueUpdate,
|
"/issue/update": routes.issueUpdate,
|
||||||
"/issue/delete": routes.issueDelete,
|
"/issue/delete": routes.issueDelete,
|
||||||
"/issues/:projectId": routes.issues,
|
"/issues/:projectBlob": routes.issuesInProject,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import issueCreate from "./issueCreate";
|
import issueCreate from "./issue/create";
|
||||||
import issueDelete from "./issueDelete";
|
import issueDelete from "./issue/delete";
|
||||||
import issues from "./issues";
|
import issueUpdate from "./issue/update";
|
||||||
import issueUpdate from "./issueUpdate";
|
import issuesInProject from "./issues/[projectBlob]";
|
||||||
|
|
||||||
export const routes = {
|
export const routes = {
|
||||||
issueCreate,
|
issueCreate,
|
||||||
issueDelete,
|
issueDelete,
|
||||||
issues,
|
|
||||||
issueUpdate,
|
issueUpdate,
|
||||||
|
issuesInProject,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { BunRequest } from "bun";
|
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
|
// /issue/create?projectId=1&title=Testing&description=Description
|
||||||
// OR
|
// OR
|
||||||
@@ -28,4 +28,3 @@ export default async function issueCreate(req: BunRequest) {
|
|||||||
|
|
||||||
return Response.json(issue);
|
return Response.json(issue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { BunRequest } from "bun";
|
import type { BunRequest } from "bun";
|
||||||
import { deleteIssue } from "../db/queries";
|
import { deleteIssue } from "../../db/queries";
|
||||||
|
|
||||||
// /issue/delete?id=1
|
// /issue/delete?id=1
|
||||||
export default async function issueDelete(req: BunRequest) {
|
export default async function issueDelete(req: BunRequest) {
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { BunRequest } from "bun";
|
import type { BunRequest } from "bun";
|
||||||
import { updateIssue } from "../db/queries";
|
import { updateIssue } from "../../db/queries";
|
||||||
|
|
||||||
// /issue/update?id=1&title=Testing&description=Description
|
// /issue/update?id=1&title=Testing&description=Description
|
||||||
export default async function issueUpdate(req: BunRequest) {
|
export default async function issueUpdate(req: BunRequest) {
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
14
src/routes/issues/[projectBlob].ts
Normal file
14
src/routes/issues/[projectBlob].ts
Normal 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);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user