tangled
alpha
login
or
join now
openstatus.dev
/
openstatus
5
fork
atom
Openstatus
www.openstatus.dev
5
fork
atom
overview
issues
pulls
pipelines
fix
Thomas Mol
1 year ago
90d2f039
3a8dd2ad
+42
-19
7 changed files
expand all
collapse all
unified
split
apps
server
src
routes
v1
index.ts
maintenances
get.ts
get_all.ts
index.ts
post.ts
put.ts
packages
db
src
seed.mts
+2
-2
apps/server/src/routes/v1/index.ts
···
8
8
import type { Workspace } from "@openstatus/db/src/schema";
9
9
import { checkApi } from "./check";
10
10
import { incidentsApi } from "./incidents";
11
11
-
import { maintenanceApi } from "./maintenance";
11
11
+
import { maintenancesApi } from "./maintenances";
12
12
import { monitorsApi } from "./monitors";
13
13
import { notificationsApi } from "./notifications";
14
14
import { pageSubscribersApi } from "./pageSubscribers";
···
136
136
api.route("/status_report", statusReportsApi);
137
137
api.route("/status_report_update", statusReportUpdatesApi);
138
138
api.route("/incident", incidentsApi);
139
139
-
api.route("/maintenance", maintenanceApi);
139
139
+
api.route("/maintenance", maintenancesApi);
140
140
api.route("/notification", notificationsApi);
141
141
api.route("/page_subscriber", pageSubscribersApi);
142
142
api.route("/check", checkApi);
+3
-3
apps/server/src/routes/v1/maintenances/get.ts
···
2
2
import { createRoute } from "@hono/zod-openapi";
3
3
import { and, db, eq } from "@openstatus/db";
4
4
import { maintenance } from "@openstatus/db/src/schema/maintenances";
5
5
-
import type { maintenanceApi } from "./index";
5
5
+
import type { maintenancesApi } from "./index";
6
6
import { MaintenanceSchema, ParamsSchema } from "./schema";
7
7
8
8
const getRoute = createRoute({
···
26
26
},
27
27
});
28
28
29
29
-
export function registerGetMaintenance(api: typeof maintenanceApi) {
29
29
+
export function registerGetMaintenance(api: typeof maintenancesApi) {
30
30
return api.openapi(getRoute, async (c) => {
31
31
const workspaceId = c.get("workspace").id;
32
32
const { id } = c.req.valid("param");
···
37
37
},
38
38
where: and(
39
39
eq(maintenance.id, Number(id)),
40
40
-
eq(maintenance.workspaceId, workspaceId),
40
40
+
eq(maintenance.workspaceId, workspaceId)
41
41
),
42
42
});
43
43
+3
-3
apps/server/src/routes/v1/maintenances/get_all.ts
···
2
2
import { createRoute } from "@hono/zod-openapi";
3
3
import { db, desc, eq } from "@openstatus/db";
4
4
import { maintenance } from "@openstatus/db/src/schema/maintenances";
5
5
-
import type { maintenanceApi } from "./index";
5
5
+
import type { maintenancesApi } from "./index";
6
6
import { MaintenanceSchema } from "./schema";
7
7
8
8
const getAllRoute = createRoute({
···
24
24
},
25
25
});
26
26
27
27
-
export function registerGetAllMaintenances(api: typeof maintenanceApi) {
27
27
+
export function registerGetAllMaintenances(api: typeof maintenancesApi) {
28
28
return api.openapi(getAllRoute, async (c) => {
29
29
const workspaceId = c.get("workspace").id;
30
30
···
40
40
_maintenances.map((m) => ({
41
41
...m,
42
42
monitorIds: m.maintenancesToMonitors.map((mtm) => mtm.monitorId),
43
43
-
})),
43
43
+
}))
44
44
);
45
45
46
46
return c.json(data, 200);
+6
-6
apps/server/src/routes/v1/maintenances/index.ts
···
6
6
import { registerPostMaintenance } from "./post";
7
7
import { registerPutMaintenance } from "./put";
8
8
9
9
-
const maintenanceApi = new OpenAPIHono<{ Variables: Variables }>({
9
9
+
const maintenancesApi = new OpenAPIHono<{ Variables: Variables }>({
10
10
defaultHook: handleZodError,
11
11
});
12
12
13
13
-
registerGetAllMaintenances(maintenanceApi);
14
14
-
registerGetMaintenance(maintenanceApi);
15
15
-
registerPostMaintenance(maintenanceApi);
16
16
-
registerPutMaintenance(maintenanceApi);
13
13
+
registerGetAllMaintenances(maintenancesApi);
14
14
+
registerGetMaintenance(maintenancesApi);
15
15
+
registerPostMaintenance(maintenancesApi);
16
16
+
registerPutMaintenance(maintenancesApi);
17
17
18
18
-
export { maintenanceApi };
18
18
+
export { maintenancesApi };
+2
-2
apps/server/src/routes/v1/maintenances/post.ts
···
7
7
maintenance,
8
8
maintenancesToMonitors,
9
9
} from "@openstatus/db/src/schema/maintenances";
10
10
-
import type { maintenanceApi } from "./index";
10
10
+
import type { maintenancesApi } from "./index";
11
11
import { MaintenanceSchema } from "./schema";
12
12
import { monitor, page } from "@openstatus/db/src/schema";
13
13
···
39
39
},
40
40
});
41
41
42
42
-
export function registerPostMaintenance(api: typeof maintenanceApi) {
42
42
+
export function registerPostMaintenance(api: typeof maintenancesApi) {
43
43
return api.openapi(postRoute, async (c) => {
44
44
const workspaceId = c.get("workspace").id;
45
45
const input = c.req.valid("json");
+2
-2
apps/server/src/routes/v1/maintenances/put.ts
···
8
8
maintenancesToMonitors,
9
9
} from "@openstatus/db/src/schema/maintenances";
10
10
import { monitor, page } from "@openstatus/db/src/schema";
11
11
-
import type { maintenanceApi } from "./index";
11
11
+
import type { maintenancesApi } from "./index";
12
12
import { MaintenanceSchema, ParamsSchema } from "./schema";
13
13
14
14
const putRoute = createRoute({
···
40
40
},
41
41
});
42
42
43
43
-
export function registerPutMaintenance(api: typeof maintenanceApi) {
43
43
+
export function registerPutMaintenance(api: typeof maintenancesApi) {
44
44
return api.openapi(putRoute, async (c) => {
45
45
const workspaceId = c.get("workspace").id;
46
46
const { id } = c.req.valid("param");
+24
-1
packages/db/src/seed.mts
···
5
5
import { env } from "../env.mjs";
6
6
import {
7
7
incidentTable,
8
8
+
maintenance,
9
9
+
maintenancesToMonitors,
8
10
monitor,
9
11
monitorsToPages,
10
12
monitorsToStatusReport,
···
20
22
21
23
async function main() {
22
24
const db = drizzle(
23
23
-
createClient({ url: env.DATABASE_URL, authToken: env.DATABASE_AUTH_TOKEN }),
25
25
+
createClient({ url: env.DATABASE_URL, authToken: env.DATABASE_AUTH_TOKEN })
24
26
);
25
27
console.log("Seeding database ");
26
28
await db
···
182
184
status: "investigating",
183
185
message: "Message",
184
186
date: new Date(),
187
187
+
})
188
188
+
.run();
189
189
+
190
190
+
await db
191
191
+
.insert(maintenance)
192
192
+
.values({
193
193
+
id: 1,
194
194
+
workspaceId: 1,
195
195
+
title: "Test Maintenance",
196
196
+
message: "Test message",
197
197
+
from: new Date(),
198
198
+
to: new Date(Date.now() + 1000),
199
199
+
pageId: 1,
200
200
+
})
201
201
+
.run();
202
202
+
203
203
+
await db
204
204
+
.insert(maintenancesToMonitors)
205
205
+
.values({
206
206
+
maintenanceId: 1,
207
207
+
monitorId: 1,
185
208
})
186
209
.run();
187
210