summaryrefslogtreecommitdiff
path: root/u/server/activity
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2025-05-18 12:24:09 -0700
committerElizabeth Alexander Hunt <me@liz.coffee>2025-05-18 12:24:09 -0700
commit9cf3fc0259730b7dcf47b3ab4a04369e39fb4614 (patch)
treea96d39b4f28d38e327376cbef7ba60dbaa95e111 /u/server/activity
parentef51b25e4388cbdf3a27e23d9f1fa381ae20a5ad (diff)
downloadci-9cf3fc0259730b7dcf47b3ab4a04369e39fb4614.tar.gz
ci-9cf3fc0259730b7dcf47b3ab4a04369e39fb4614.zip
finish up pengueno
Diffstat (limited to 'u/server/activity')
-rw-r--r--u/server/activity/fourohfour.ts23
-rw-r--r--u/server/activity/health.ts45
-rw-r--r--u/server/activity/mod.ts4
3 files changed, 38 insertions, 34 deletions
diff --git a/u/server/activity/fourohfour.ts b/u/server/activity/fourohfour.ts
index 698dacd..48740df 100644
--- a/u/server/activity/fourohfour.ts
+++ b/u/server/activity/fourohfour.ts
@@ -1,16 +1,10 @@
import {
type ITraceable,
JsonResponse,
- TraceUtil,
+ type PenguenoRequest,
+ type ServerTrace,
} from "@emprespresso/pengueno";
-export enum HealthCheckInput {
- CHECK,
-}
-export enum HealthCheckOutput {
- YAASQUEEN,
-}
-
const messages = [
"(≧ω≦)ゞ Oopsie! This endpoint has gone a-404-dable!",
"。゚(。ノωヽ。)゚。 Meow-t found! Your API call ran away!",
@@ -21,10 +15,13 @@ const messages = [
"(ꈍᴗꈍ) Uwu~ not found, but found our hearts instead!",
"ヽ(;▽;)ノ Eep! This route has ghosted you~",
];
-export const FourOhFourActivity = <Trace>(req: ITraceable<Request, Trace>) =>
- req.bimap(TraceUtil.withFunctionTrace(FourOhFourActivity))
- .map(() =>
- new JsonResponse(messages[Math.random() * messages.length], {
+const randomFourOhFour = () => messages[Math.random() * messages.length];
+export const FourOhFourActivity = (
+ req: ITraceable<PenguenoRequest, ServerTrace>,
+) =>
+ req
+ .move(
+ new JsonResponse(req, randomFourOhFour(), {
status: 404,
- })
+ }),
);
diff --git a/u/server/activity/health.ts b/u/server/activity/health.ts
index 98acbb8..b9efa3a 100644
--- a/u/server/activity/health.ts
+++ b/u/server/activity/health.ts
@@ -1,8 +1,12 @@
import {
type IEither,
type ITraceable,
+ JsonResponse,
LogLevel,
type Mapper,
+ Metric,
+ type PenguenoRequest,
+ type ServerTrace,
TraceUtil,
} from "@emprespresso/pengueno";
@@ -13,33 +17,36 @@ export enum HealthCheckOutput {
YAASQUEEN,
}
-export const HealthCheckActivity = <Trace>(
+const healthCheckMetric = Metric.fromName("Health");
+export const HealthCheckActivity = (
check: Mapper<
- ITraceable<HealthCheckInput, Trace>,
+ ITraceable<HealthCheckInput, ServerTrace>,
Promise<IEither<Error, HealthCheckOutput>>
>,
) =>
-(req: ITraceable<Request, Trace>) =>
- req.bimap(TraceUtil.withFunctionTrace(HealthCheckActivity))
- .flatMap((r) => r.move(HealthCheckInput.CHECK))
- .map(check)
- .map(TraceUtil.promiseify(({ item: health, trace }) => {
+(req: ITraceable<PenguenoRequest, ServerTrace>) =>
+ req
+ .bimap(TraceUtil.withFunctionTrace(HealthCheckActivity))
+ .bimap(TraceUtil.withMetricTrace(healthCheckMetric))
+ .flatMap((r) => r.move(HealthCheckInput.CHECK).map(check))
+ .map(TraceUtil.promiseify((h) => {
+ const health = h.get();
health.mapBoth((e) => {
- trace.addTrace(LogLevel.ERROR).trace(`${e}`);
- return new Response(
- JSON.stringify({
- message: "oh no, i need to eat more vegetables (。•́︿•̀。)...",
- }),
- { status: 500, headers: { "Content-Type": "application/json" } },
+ h.trace.trace(healthCheckMetric.failure);
+ h.trace.addTrace(LogLevel.ERROR).trace(`${e}`);
+ return new JsonResponse(
+ req,
+ "oh no, i need to eat more vegetables (。•́︿•̀。)...",
+ { status: 500 },
);
}, (_healthy) => {
+ h.trace.trace(healthCheckMetric.success);
const msg = `think im healthy!! (✿˘◡˘) ready to do work~`;
- trace.trace(msg);
- return new Response(
- JSON.stringify({
- message: "oh no, i need to eat more vegetables (。•́︿•̀。)...",
- }),
- { status: 500, headers: { "Content-Type": "application/json" } },
+ h.trace.trace(msg);
+ return new JsonResponse(
+ req,
+ msg,
+ { status: 200 },
);
});
}));
diff --git a/u/server/activity/mod.ts b/u/server/activity/mod.ts
index f0cbed2..9bd512f 100644
--- a/u/server/activity/mod.ts
+++ b/u/server/activity/mod.ts
@@ -1,4 +1,4 @@
-import { JsonResponse, type RequestFilter } from "@emprespresso/pengueno";
+import type { PenguenoResponse, RequestFilter } from "@emprespresso/pengueno";
export enum StatusOK {
FOLLOW = 300,
@@ -9,7 +9,7 @@ export interface ActivityOk {
}
export interface IActivity<Trace>
- extends RequestFilter<ActivityOk, Trace, Response> {
+ extends RequestFilter<ActivityOk, Trace, PenguenoResponse> {
}
export * from "./health.ts";