only show status remove warning if it is being used

This commit is contained in:
Oliver Bryan
2026-01-11 00:14:06 +00:00
parent 69c8ac7bd0
commit 558d0aa3c8
8 changed files with 118 additions and 10 deletions

View File

@@ -8,6 +8,7 @@ import issueUpdate from "./issue/update";
import issues from "./issues/all";
import issuesByProject from "./issues/by-project";
import issuesReplaceStatus from "./issues/replace-status";
import issuesStatusCount from "./issues/status-count";
import organisationAddMember from "./organisation/add-member";
import organisationById from "./organisation/by-id";
import organisationsByUser from "./organisation/by-user";
@@ -50,6 +51,7 @@ export const routes = {
issuesByProject,
issues,
issuesReplaceStatus,
issuesStatusCount,
organisationCreate,
organisationById,

View File

@@ -0,0 +1,31 @@
import type { AuthedRequest } from "../../auth/middleware";
import { getIssueStatusCountByOrganisation, getOrganisationMemberRole } from "../../db/queries";
// /issues/status-count?organisationId=1&status=TODO
export default async function issuesStatusCount(req: AuthedRequest) {
const url = new URL(req.url);
const organisationIdParam = url.searchParams.get("organisationId");
const status = url.searchParams.get("status");
if (!organisationIdParam) {
return new Response("missing organisationId", { status: 400 });
}
if (!status) {
return new Response("missing status", { status: 400 });
}
const organisationId = Number(organisationIdParam);
if (!Number.isInteger(organisationId)) {
return new Response("organisationId must be an integer", { status: 400 });
}
const membership = await getOrganisationMemberRole(organisationId, req.userId);
if (!membership) {
return new Response("not a member of this organisation", { status: 403 });
}
const result = await getIssueStatusCountByOrganisation(organisationId, status);
return Response.json(result);
}