From 30c7961aec6a31d6a23e1bdac2ec24d8355fcfdd Mon Sep 17 00:00:00 2001 From: Thibault Le Ouay Date: Sat, 15 Jun 2024 21:50:42 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20headers=20and=20checker=20(#877)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/checker/cmd/main.go | 34 +++++++++++++++++-- apps/checker/request/request.go | 4 ++- apps/server/src/v1/check/post.ts | 20 +++++------ apps/server/src/v1/incidents/get.ts | 6 ++-- apps/server/src/v1/incidents/get_all.ts | 2 +- apps/server/src/v1/incidents/put.ts | 6 ++-- apps/server/src/v1/middleware.test.ts | 15 ++++++++ apps/server/src/v1/middleware.ts | 14 ++++---- apps/server/src/v1/monitors/delete.ts | 2 +- apps/server/src/v1/monitors/get.ts | 6 ++-- apps/server/src/v1/monitors/get_all.ts | 6 ++-- apps/server/src/v1/monitors/post.ts | 6 ++-- apps/server/src/v1/monitors/put.ts | 2 +- apps/server/src/v1/monitors/summary/get.ts | 15 ++++---- apps/server/src/v1/notifications/get.ts | 6 ++-- apps/server/src/v1/notifications/get_all.ts | 2 +- apps/server/src/v1/notifications/post.ts | 6 ++-- apps/server/src/v1/pageSubscribers/post.ts | 8 ++--- apps/server/src/v1/pages/get.ts | 4 +-- apps/server/src/v1/pages/get_all.ts | 2 +- apps/server/src/v1/pages/post.ts | 6 ++-- apps/server/src/v1/pages/put.ts | 12 +++---- apps/server/src/v1/statusReportUpdates/get.ts | 10 +++--- .../server/src/v1/statusReportUpdates/post.ts | 14 ++++---- apps/server/src/v1/statusReports/delete.ts | 6 ++-- apps/server/src/v1/statusReports/get.ts | 4 +-- apps/server/src/v1/statusReports/get_all.ts | 4 +-- apps/server/src/v1/statusReports/post.ts | 22 ++++++------ .../src/v1/statusReports/update/post.ts | 12 +++---- 29 files changed, 152 insertions(+), 104 deletions(-) create mode 100644 apps/server/src/v1/middleware.test.ts diff --git a/apps/checker/cmd/main.go b/apps/checker/cmd/main.go index f0f0551a17..550a400428 100644 --- a/apps/checker/cmd/main.go +++ b/apps/checker/cmd/main.go @@ -24,6 +24,19 @@ import ( type statusCode int +// We should export it +type PingResponse struct { + RequestId int64 `json:"requestId,omitempty"` + WorkspaceId int64 `json:"workspaceId,omitempty"` + Status int `json:"status,omitempty"` + Latency int64 `json:"latency"` + Body string `json:"body,omitempty"` + Headers string `json:"headers,omitempty"` + Time int64 `json:"time"` + Timing checker.Timing `json:"timing"` + Region string `json:"region"` +} + func (s statusCode) IsSuccessful() bool { return s >= 200 && s < 300 } @@ -263,10 +276,25 @@ func main() { r.Region = flyRegion + headersAsString, err := json.Marshal(r.Headers) + if err != nil { + return nil + } + + tbData := PingResponse{ + RequestId: req.RequestId, + WorkspaceId: req.WorkspaceId, + Status: r.Status, + Latency: r.Latency, + Body: r.Body, + Headers: string(headersAsString), + Time: r.Time, + Timing: r.Timing, + Region: r.Region, + } + res = r - res.RequestId = req.RequestId - res.WorkspaceId = req.WorkspaceId - if err := tinybirdClient.SendEvent(ctx, res, dataSourceName); err != nil { + if err := tinybirdClient.SendEvent(ctx, tbData, dataSourceName); err != nil { log.Ctx(ctx).Error().Err(err).Msg("failed to send event to tinybird") } return nil diff --git a/apps/checker/request/request.go b/apps/checker/request/request.go index 6b54e75e15..6235227bf8 100644 --- a/apps/checker/request/request.go +++ b/apps/checker/request/request.go @@ -1,6 +1,8 @@ package request -import "encoding/json" +import ( + "encoding/json" +) type AssertionType string diff --git a/apps/server/src/v1/check/post.ts b/apps/server/src/v1/check/post.ts index 5cab30c8a9..70ba74808c 100644 --- a/apps/server/src/v1/check/post.ts +++ b/apps/server/src/v1/check/post.ts @@ -107,40 +107,40 @@ export function registerPostCheck(api: typeof checkAPI) { if (aggregated) { // This is ugly const dnsArray = fulfilledRequest.map( - (r) => r.timing.dnsDone - r.timing.dnsStart, + (r) => r.timing.dnsDone - r.timing.dnsStart ); const connectArray = fulfilledRequest.map( - (r) => r.timing.connectDone - r.timing.connectStart, + (r) => r.timing.connectDone - r.timing.connectStart ); const tlsArray = fulfilledRequest.map( - (r) => r.timing.tlsHandshakeDone - r.timing.tlsHandshakeStart, + (r) => r.timing.tlsHandshakeDone - r.timing.tlsHandshakeStart ); const firstArray = fulfilledRequest.map( - (r) => r.timing.firstByteDone - r.timing.firstByteStart, + (r) => r.timing.firstByteDone - r.timing.firstByteStart ); const transferArray = fulfilledRequest.map( - (r) => r.timing.transferDone - r.timing.transferStart, + (r) => r.timing.transferDone - r.timing.transferStart ); const latencyArray = fulfilledRequest.map((r) => r.latency); const dnsPercentile = percentile([50, 75, 95, 99], dnsArray) as number[]; const connectPercentile = percentile( [50, 75, 95, 99], - connectArray, + connectArray ) as number[]; const tlsPercentile = percentile([50, 75, 95, 99], tlsArray) as number[]; const firstPercentile = percentile( [50, 75, 95, 99], - firstArray, + firstArray ) as number[]; const transferPercentile = percentile( [50, 75, 95, 99], - transferArray, + transferArray ) as number[]; const latencyPercentile = percentile( [50, 75, 95, 99], - latencyArray, + latencyArray ) as number[]; const aggregatedDNS = AggregatedResponseSchema.parse({ @@ -212,6 +212,6 @@ export function registerPostCheck(api: typeof checkAPI) { aggregated: aggregatedResponse ? aggregatedResponse : undefined, }); - return c.json(responseResult); + return c.json(responseResult, 200); }); } diff --git a/apps/server/src/v1/incidents/get.ts b/apps/server/src/v1/incidents/get.ts index 49a5f937d9..5b3ff569df 100644 --- a/apps/server/src/v1/incidents/get.ts +++ b/apps/server/src/v1/incidents/get.ts @@ -40,8 +40,8 @@ export function registerGetIncident(app: typeof incidentsApi) { .where( and( eq(incidentTable.workspaceId, Number(workspaceId)), - eq(incidentTable.id, Number(id)), - ), + eq(incidentTable.id, Number(id)) + ) ) .get(); @@ -51,6 +51,6 @@ export function registerGetIncident(app: typeof incidentsApi) { const data = IncidentSchema.parse(_incident); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/incidents/get_all.ts b/apps/server/src/v1/incidents/get_all.ts index 58ed41f829..d7efe2f1da 100644 --- a/apps/server/src/v1/incidents/get_all.ts +++ b/apps/server/src/v1/incidents/get_all.ts @@ -42,6 +42,6 @@ export function registerGetAllIncidents(app: typeof incidentsApi) { } const returnValues = z.array(IncidentSchema).parse(_incidents); // TODO: think of using safeParse with SchemaError.fromZod - return c.json(returnValues); + return c.json(returnValues, 200); }); } diff --git a/apps/server/src/v1/incidents/put.ts b/apps/server/src/v1/incidents/put.ts index 8ab89c68c5..8cab75cb40 100644 --- a/apps/server/src/v1/incidents/put.ts +++ b/apps/server/src/v1/incidents/put.ts @@ -59,8 +59,8 @@ export function registerPutIncident(app: typeof incidentsApi) { .where( and( eq(incidentTable.id, Number(id)), - eq(incidentTable.workspaceId, Number(workspaceId)), - ), + eq(incidentTable.workspaceId, Number(workspaceId)) + ) ) .get(); @@ -81,6 +81,6 @@ export function registerPutIncident(app: typeof incidentsApi) { const data = IncidentSchema.parse(_newIncident); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/middleware.test.ts b/apps/server/src/v1/middleware.test.ts new file mode 100644 index 0000000000..6666abae98 --- /dev/null +++ b/apps/server/src/v1/middleware.test.ts @@ -0,0 +1,15 @@ +import { expect, test } from "bun:test"; + +import { api } from "./index"; + +test("Middleware error should return json", async () => { + const res = await api.request("/status_report/1", {}); + + const json = await res.json(); + expect(res.status).toBe(401); + expect(json).toMatchObject({ + code: "UNAUTHORIZED", + message: "Unauthorized", + docs: "https://docs.openstatus.dev/api-references/errors/code/UNAUTHORIZED", + }); +}); diff --git a/apps/server/src/v1/middleware.ts b/apps/server/src/v1/middleware.ts index 312e6c3cfc..bb0359a346 100644 --- a/apps/server/src/v1/middleware.ts +++ b/apps/server/src/v1/middleware.ts @@ -5,22 +5,24 @@ import { db, eq } from "@openstatus/db"; import { workspace } from "@openstatus/db/src/schema"; import { getPlanConfig } from "@openstatus/plans"; import type { Variables } from "./index"; +import { HTTPException } from "hono/http-exception"; export async function middleware( c: Context<{ Variables: Variables }, "/*">, - next: Next, + next: Next ) { const key = c.req.header("x-openstatus-key"); - if (!key) return c.text("Unauthorized", 401); + if (!key) throw new HTTPException(401, { message: "Unauthorized" }); const { error, result } = process.env.NODE_ENV === "production" ? await verifyKey(key) : { result: { valid: true, ownerId: "1" }, error: null }; - if (error) return c.text("Internal Server Error", 500); - if (!result.valid) return c.text("Unauthorized", 401); - if (!result.ownerId) return c.text("Unauthorized", 401); + if (error) throw new HTTPException(500, { message: error.message }); + if (!result.valid) throw new HTTPException(401, { message: "Unauthorized" }); + if (!result.ownerId) + throw new HTTPException(401, { message: "Unauthorized" }); const _workspace = await db .select() @@ -30,7 +32,7 @@ export async function middleware( if (!_workspace) { console.error("Workspace not found"); - return c.text("Unauthorized", 401); + throw new HTTPException(401, { message: "Unauthorized" }); } c.set("workspacePlan", getPlanConfig(_workspace.plan)); diff --git a/apps/server/src/v1/monitors/delete.ts b/apps/server/src/v1/monitors/delete.ts index 2a33c75cdb..eb17193deb 100644 --- a/apps/server/src/v1/monitors/delete.ts +++ b/apps/server/src/v1/monitors/delete.ts @@ -56,6 +56,6 @@ export function registerDeleteMonitor(app: typeof monitorsApi) { // FIXME: Remove all relations of the monitor from all notifications, pages,.... - return c.json({}); + return c.json({}, 200); }); } diff --git a/apps/server/src/v1/monitors/get.ts b/apps/server/src/v1/monitors/get.ts index 7e40113eec..25a93e17e7 100644 --- a/apps/server/src/v1/monitors/get.ts +++ b/apps/server/src/v1/monitors/get.ts @@ -41,8 +41,8 @@ export function registerGetMonitor(api: typeof monitorsApi) { and( eq(monitor.id, Number(id)), eq(monitor.workspaceId, Number(workspaceId)), - isNull(monitor.deletedAt), - ), + isNull(monitor.deletedAt) + ) ) .get(); @@ -52,6 +52,6 @@ export function registerGetMonitor(api: typeof monitorsApi) { const data = MonitorSchema.parse(_monitor); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/monitors/get_all.ts b/apps/server/src/v1/monitors/get_all.ts index fa56ef18d3..cfdf9da6d3 100644 --- a/apps/server/src/v1/monitors/get_all.ts +++ b/apps/server/src/v1/monitors/get_all.ts @@ -37,8 +37,8 @@ export function registerGetAllMonitors(app: typeof monitorsApi) { .where( and( eq(monitor.workspaceId, Number(workspaceId)), - isNull(monitor.deletedAt), - ), + isNull(monitor.deletedAt) + ) ) .all(); @@ -48,6 +48,6 @@ export function registerGetAllMonitors(app: typeof monitorsApi) { const data = z.array(MonitorSchema).parse(_monitors); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/monitors/post.ts b/apps/server/src/v1/monitors/post.ts index 6b3482f936..2a8ac1bb4a 100644 --- a/apps/server/src/v1/monitors/post.ts +++ b/apps/server/src/v1/monitors/post.ts @@ -54,8 +54,8 @@ export function registerPostMonitor(api: typeof monitorsApi) { .where( and( eq(monitor.workspaceId, Number(workspaceId)), - isNull(monitor.deletedAt), - ), + isNull(monitor.deletedAt) + ) ) .all() )[0].count; @@ -97,6 +97,6 @@ export function registerPostMonitor(api: typeof monitorsApi) { const data = MonitorSchema.parse(_newMonitor); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/monitors/put.ts b/apps/server/src/v1/monitors/put.ts index 14bed56766..da563b7584 100644 --- a/apps/server/src/v1/monitors/put.ts +++ b/apps/server/src/v1/monitors/put.ts @@ -81,6 +81,6 @@ export function registerPutMonitor(api: typeof monitorsApi) { const data = MonitorSchema.parse(_newMonitor); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/monitors/summary/get.ts b/apps/server/src/v1/monitors/summary/get.ts index 715e548565..0877ac71d5 100644 --- a/apps/server/src/v1/monitors/summary/get.ts +++ b/apps/server/src/v1/monitors/summary/get.ts @@ -65,8 +65,8 @@ export function registerGetMonitorSummary(api: typeof monitorsApi) { and( eq(monitor.id, Number(id)), eq(monitor.workspaceId, Number(workspaceId)), - isNull(monitor.deletedAt), - ), + isNull(monitor.deletedAt) + ) ) .get(); @@ -75,13 +75,11 @@ export function registerGetMonitorSummary(api: typeof monitorsApi) { } const cache = await redis.get>( - `${id}-daily-stats`, + `${id}-daily-stats` ); if (cache) { console.log("fetching from cache"); - return c.json({ - data: cache, - }); + return c.json({ data: cache }, 200); } // FIXME: we should use the OSTinybird client @@ -90,8 +88,11 @@ export function registerGetMonitorSummary(api: typeof monitorsApi) { monitorId: id, }); + if (res === undefined) { + throw new HTTPException(404, { message: "Not Found" }); + } await redis.set(`${id}-daily-stats`, res, { ex: 600 }); - return c.json({ data: res }); + return c.json({ data: res }, 200); }); } diff --git a/apps/server/src/v1/notifications/get.ts b/apps/server/src/v1/notifications/get.ts index af4dfbc7fb..4b3b7963d0 100644 --- a/apps/server/src/v1/notifications/get.ts +++ b/apps/server/src/v1/notifications/get.ts @@ -43,8 +43,8 @@ export function registerGetNotification(api: typeof notificationsApi) { .where( and( eq(page.workspaceId, Number(workspaceId)), - eq(notification.id, Number(id)), - ), + eq(notification.id, Number(id)) + ) ) .get(); @@ -66,6 +66,6 @@ export function registerGetNotification(api: typeof notificationsApi) { monitors, }); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/notifications/get_all.ts b/apps/server/src/v1/notifications/get_all.ts index 2f94e29e54..3d7b4e2532 100644 --- a/apps/server/src/v1/notifications/get_all.ts +++ b/apps/server/src/v1/notifications/get_all.ts @@ -64,6 +64,6 @@ export function registerGetAllNotifications(app: typeof notificationsApi) { data.push(p); } - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/notifications/post.ts b/apps/server/src/v1/notifications/post.ts index a21cb1e944..5bdc650fb7 100644 --- a/apps/server/src/v1/notifications/post.ts +++ b/apps/server/src/v1/notifications/post.ts @@ -75,8 +75,8 @@ export function registerPostNotification(api: typeof notificationsApi) { and( inArray(monitor.id, monitors), eq(monitor.workspaceId, Number(workspaceId)), - isNull(monitor.deletedAt), - ), + isNull(monitor.deletedAt) + ) ) .all(); @@ -113,6 +113,6 @@ export function registerPostNotification(api: typeof notificationsApi) { monitors, payload: _payload, }); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/pageSubscribers/post.ts b/apps/server/src/v1/pageSubscribers/post.ts index e7faf2e754..e0c54f6b82 100644 --- a/apps/server/src/v1/pageSubscribers/post.ts +++ b/apps/server/src/v1/pageSubscribers/post.ts @@ -49,7 +49,7 @@ export function registerPostPageSubscriber(api: typeof pageSubscribersApi) { .select() .from(page) .where( - and(eq(page.id, Number(id)), eq(page.workspaceId, Number(workspaceId))), + and(eq(page.id, Number(id)), eq(page.workspaceId, Number(workspaceId))) ) .get(); @@ -63,8 +63,8 @@ export function registerPostPageSubscriber(api: typeof pageSubscribersApi) { .where( and( eq(pageSubscriber.email, input.email), - eq(pageSubscriber.pageId, Number(id)), - ), + eq(pageSubscriber.pageId, Number(id)) + ) ) .get(); @@ -101,6 +101,6 @@ export function registerPostPageSubscriber(api: typeof pageSubscribersApi) { const data = PageSubscriberSchema.parse(_statusReportSubscriberUpdate); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/pages/get.ts b/apps/server/src/v1/pages/get.ts index 6a20f4cf32..512cf988cc 100644 --- a/apps/server/src/v1/pages/get.ts +++ b/apps/server/src/v1/pages/get.ts @@ -38,7 +38,7 @@ export function registerGetPage(api: typeof pagesApi) { .select() .from(page) .where( - and(eq(page.workspaceId, Number(workspaceId)), eq(page.id, Number(id))), + and(eq(page.workspaceId, Number(workspaceId)), eq(page.id, Number(id))) ) .get(); @@ -48,6 +48,6 @@ export function registerGetPage(api: typeof pagesApi) { const data = PageSchema.parse(_page); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/pages/get_all.ts b/apps/server/src/v1/pages/get_all.ts index d18cf3b907..3fccfe1659 100644 --- a/apps/server/src/v1/pages/get_all.ts +++ b/apps/server/src/v1/pages/get_all.ts @@ -40,6 +40,6 @@ export function registerGetAllPages(api: typeof pagesApi) { const data = z.array(PageSchema).parse(_pages); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/pages/post.ts b/apps/server/src/v1/pages/post.ts index 5b88013d64..47fa3e7264 100644 --- a/apps/server/src/v1/pages/post.ts +++ b/apps/server/src/v1/pages/post.ts @@ -95,8 +95,8 @@ export function registerPostPage(api: typeof pagesApi) { and( inArray(monitor.id, monitorIds), eq(monitor.workspaceId, Number(workspaceId)), - isNull(monitor.deletedAt), - ), + isNull(monitor.deletedAt) + ) ) .all(); @@ -128,6 +128,6 @@ export function registerPostPage(api: typeof pagesApi) { } } const data = PageSchema.parse(_page); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/pages/put.ts b/apps/server/src/v1/pages/put.ts index 3a8cb5a207..d1f7b612ae 100644 --- a/apps/server/src/v1/pages/put.ts +++ b/apps/server/src/v1/pages/put.ts @@ -59,7 +59,7 @@ export function registerPutPage(api: typeof pagesApi) { .select() .from(page) .where( - and(eq(page.id, Number(id)), eq(page.workspaceId, Number(workspaceId))), + and(eq(page.id, Number(id)), eq(page.workspaceId, Number(workspaceId))) ) .get(); @@ -98,8 +98,8 @@ export function registerPutPage(api: typeof pagesApi) { and( inArray(monitor.id, monitorIds), eq(monitor.workspaceId, Number(workspaceId)), - isNull(monitor.deletedAt), - ), + isNull(monitor.deletedAt) + ) ) .all(); @@ -132,8 +132,8 @@ export function registerPutPage(api: typeof pagesApi) { .where( and( inArray(monitorsToPages.monitorId, removedMonitors), - eq(monitorsToPages.pageId, newPage.id), - ), + eq(monitorsToPages.pageId, newPage.id) + ) ); } @@ -154,6 +154,6 @@ export function registerPutPage(api: typeof pagesApi) { const data = PageSchema.parse(newPage); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/statusReportUpdates/get.ts b/apps/server/src/v1/statusReportUpdates/get.ts index fdb4914039..e5a28870c9 100644 --- a/apps/server/src/v1/statusReportUpdates/get.ts +++ b/apps/server/src/v1/statusReportUpdates/get.ts @@ -30,7 +30,7 @@ const getRoute = createRoute({ }); export function registerGetStatusReportUpdate( - api: typeof statusReportUpdatesApi, + api: typeof statusReportUpdatesApi ) { return api.openapi(getRoute, async (c) => { const workspaceId = c.get("workspaceId"); @@ -43,8 +43,8 @@ export function registerGetStatusReportUpdate( statusReport, and( eq(statusReport.id, statusReportUpdate.statusReportId), - eq(statusReport.workspaceId, Number(workspaceId)), - ), + eq(statusReport.workspaceId, Number(workspaceId)) + ) ) .where(eq(statusReportUpdate.id, Number(id))) .get(); @@ -54,9 +54,9 @@ export function registerGetStatusReportUpdate( } const data = StatusReportUpdateSchema.parse( - _statusReportJoin.status_report_update, + _statusReportJoin.status_report_update ); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/statusReportUpdates/post.ts b/apps/server/src/v1/statusReportUpdates/post.ts index 6321429fec..a40abadd33 100644 --- a/apps/server/src/v1/statusReportUpdates/post.ts +++ b/apps/server/src/v1/statusReportUpdates/post.ts @@ -44,7 +44,7 @@ const createStatusUpdate = createRoute({ }); export function registerPostStatusReportUpdate( - api: typeof statusReportUpdatesApi, + api: typeof statusReportUpdatesApi ) { return api.openapi(createStatusUpdate, async (c) => { const workspaceId = c.get("workspaceId"); @@ -57,8 +57,8 @@ export function registerPostStatusReportUpdate( .where( and( eq(statusReport.id, input.statusReportId), - eq(statusReport.workspaceId, Number(workspaceId)), - ), + eq(statusReport.workspaceId, Number(workspaceId)) + ) ) .get(); @@ -95,8 +95,8 @@ export function registerPostStatusReportUpdate( .where( and( eq(pageSubscriber.pageId, currentPage.pageId), - isNotNull(pageSubscriber.acceptedAt), - ), + isNotNull(pageSubscriber.acceptedAt) + ) ) .all(); @@ -107,7 +107,7 @@ export function registerPostStatusReportUpdate( .get(); if (!pageInfo) continue; const subscribersEmails = subscribers.map( - (subscriber) => subscriber.email, + (subscriber) => subscriber.email ); // TODO: verify if we leak any email data here @@ -123,6 +123,6 @@ export function registerPostStatusReportUpdate( const data = StatusReportUpdateSchema.parse(_statusReportUpdate); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/statusReports/delete.ts b/apps/server/src/v1/statusReports/delete.ts index b4557639df..b80a5277e1 100644 --- a/apps/server/src/v1/statusReports/delete.ts +++ b/apps/server/src/v1/statusReports/delete.ts @@ -40,8 +40,8 @@ export function registerDeleteStatusReport(api: typeof statusReportsApi) { .where( and( eq(statusReport.id, Number(id)), - eq(statusReport.workspaceId, Number(workspaceId)), - ), + eq(statusReport.workspaceId, Number(workspaceId)) + ) ) .get(); @@ -54,6 +54,6 @@ export function registerDeleteStatusReport(api: typeof statusReportsApi) { .where(eq(statusReport.id, Number(id))) .run(); - return c.json({}); + return c.json({}, 200); }); } diff --git a/apps/server/src/v1/statusReports/get.ts b/apps/server/src/v1/statusReports/get.ts index 72963debfc..aef3f4a4d5 100644 --- a/apps/server/src/v1/statusReports/get.ts +++ b/apps/server/src/v1/statusReports/get.ts @@ -42,7 +42,7 @@ export function regsiterGetStatusReport(api: typeof statusReportsApi) { }, where: and( eq(statusReport.workspaceId, Number(workspaceId)), - eq(statusReport.id, Number(id)), + eq(statusReport.id, Number(id)) ), }); @@ -73,6 +73,6 @@ export function regsiterGetStatusReport(api: typeof statusReportsApi) { statusReportUpdateIds: statusReportUpdates.map((update) => update.id), }); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/statusReports/get_all.ts b/apps/server/src/v1/statusReports/get_all.ts index 23e408bda0..33dc2eac7a 100644 --- a/apps/server/src/v1/statusReports/get_all.ts +++ b/apps/server/src/v1/statusReports/get_all.ts @@ -50,9 +50,9 @@ export function registerGetAllStatusReports(api: typeof statusReportsApi) { statusReportUpdateIds: r.statusReportUpdates.map((u) => u.id), pageIds: r.pagesToStatusReports.map((p) => p.pageId), monitorIds: r.monitorsToStatusReports.map((m) => m.monitorId), - })), + })) ); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/statusReports/post.ts b/apps/server/src/v1/statusReports/post.ts index 97b253da02..c945a32465 100644 --- a/apps/server/src/v1/statusReports/post.ts +++ b/apps/server/src/v1/statusReports/post.ts @@ -72,8 +72,8 @@ export function registerPostStatusReport(api: typeof statusReportsApi) { and( eq(monitor.workspaceId, Number(workspaceId)), inArray(monitor.id, monitorIds), - isNull(monitor.deletedAt), - ), + isNull(monitor.deletedAt) + ) ) .all(); @@ -89,8 +89,8 @@ export function registerPostStatusReport(api: typeof statusReportsApi) { .where( and( eq(page.workspaceId, Number(workspaceId)), - inArray(page.id, pageIds), - ), + inArray(page.id, pageIds) + ) ) .all(); @@ -127,7 +127,7 @@ export function registerPostStatusReport(api: typeof statusReportsApi) { pageId: id, statusReportId: _newStatusReport.id, }; - }), + }) ) .returning(); } @@ -141,7 +141,7 @@ export function registerPostStatusReport(api: typeof statusReportsApi) { monitorId: id, statusReportId: _newStatusReport.id, }; - }), + }) ) .returning(); } @@ -151,7 +151,7 @@ export function registerPostStatusReport(api: typeof statusReportsApi) { .select() .from(pagesToStatusReports) .where( - eq(pagesToStatusReports.statusReportId, Number(_newStatusReport.id)), + eq(pagesToStatusReports.statusReportId, Number(_newStatusReport.id)) ) .all(); for (const currentPage of allPages) { @@ -161,8 +161,8 @@ export function registerPostStatusReport(api: typeof statusReportsApi) { .where( and( eq(pageSubscriber.pageId, currentPage.pageId), - isNotNull(pageSubscriber.acceptedAt), - ), + isNotNull(pageSubscriber.acceptedAt) + ) ) .all(); const pageInfo = await db @@ -172,7 +172,7 @@ export function registerPostStatusReport(api: typeof statusReportsApi) { .get(); if (!pageInfo) continue; const subscribersEmails = subscribers.map( - (subscriber) => subscriber.email, + (subscriber) => subscriber.email ); await sendEmailHtml({ to: subscribersEmails, @@ -191,6 +191,6 @@ export function registerPostStatusReport(api: typeof statusReportsApi) { statusReportUpdateIds: [_newStatusReportUpdate.id], }); - return c.json(data); + return c.json(data, 200); }); } diff --git a/apps/server/src/v1/statusReports/update/post.ts b/apps/server/src/v1/statusReports/update/post.ts index c258e43b5c..e03ef4e0e1 100644 --- a/apps/server/src/v1/statusReports/update/post.ts +++ b/apps/server/src/v1/statusReports/update/post.ts @@ -57,8 +57,8 @@ export function registerStatusReportUpdateRoutes(api: typeof statusReportsApi) { .where( and( eq(statusReport.id, Number(id)), - eq(statusReport.workspaceId, Number(workspaceId)), - ), + eq(statusReport.workspaceId, Number(workspaceId)) + ) ) .returning() .get(); @@ -90,8 +90,8 @@ export function registerStatusReportUpdateRoutes(api: typeof statusReportsApi) { .where( and( eq(pageSubscriber.pageId, currentPage.pageId), - isNotNull(pageSubscriber.acceptedAt), - ), + isNotNull(pageSubscriber.acceptedAt) + ) ) .all(); const pageInfo = await db @@ -101,7 +101,7 @@ export function registerStatusReportUpdateRoutes(api: typeof statusReportsApi) { .get(); if (!pageInfo) continue; const subscribersEmails = subscribers.map( - (subscriber) => subscriber.email, + (subscriber) => subscriber.email ); await sendEmailHtml({ to: subscribersEmails, @@ -115,6 +115,6 @@ export function registerStatusReportUpdateRoutes(api: typeof statusReportsApi) { const data = StatusReportUpdateSchema.parse(_statusReportUpdate); - return c.json(data); + return c.json(data, 200); }); }