Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
1.7 kB ยท 64 lines
TypeScript
at incident-api
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465import { createRoute } from "@hono/zod-openapi";import { and, db, eq } from "@openstatus/db";import { statusReport, statusReportUpdate } from "@openstatus/db/src/schema";
import { OpenStatusApiError, openApiErrorResponses } from "@/libs/errors";
import type { statusReportUpdatesApi } from "./index";import { ParamsSchema, StatusReportUpdateSchema } from "./schema";
const getRoute = createRoute({ method: "get", tags: ["status_report_update"], summary: "Get a status report update", path: "/{id}", request: { params: ParamsSchema, }, responses: { 200: { content: { "application/json": { schema: StatusReportUpdateSchema, }, }, description: "Get a status report update", }, ...openApiErrorResponses, },});
export function registerGetStatusReportUpdate( api: typeof statusReportUpdatesApi,) { return api.openapi(getRoute, async (c) => { const workspaceId = c.get("workspace").id; const { id } = c.req.valid("param");
const _statusReport = await db .select() .from(statusReportUpdate) .innerJoin( statusReport, and( eq(statusReport.id, statusReportUpdate.statusReportId), eq(statusReport.workspaceId, workspaceId), ), ) .where(eq(statusReportUpdate.id, Number(id))) .get();
if (!_statusReport) { throw new OpenStatusApiError({ code: "NOT_FOUND", message: `Status Report Update ${id} not found`, }); }
const data = StatusReportUpdateSchema.parse( _statusReport.status_report_update, );
return c.json(data, 200); });}