From 1ab20482ab37d7962c8e69701163270e687df3ca Mon Sep 17 00:00:00 2001 From: Elizabeth Alexander Hunt Date: Thu, 15 May 2025 23:39:29 -0700 Subject: more snapshot --- hooks/server/mod.ts | 91 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 37 deletions(-) (limited to 'hooks/server') diff --git a/hooks/server/mod.ts b/hooks/server/mod.ts index c484af4..cc20827 100644 --- a/hooks/server/mod.ts +++ b/hooks/server/mod.ts @@ -1,39 +1,56 @@ -import { Either, type ITraceable } from "@emprespresso/pengueno"; +import { + getRequiredEnv, + getStdout, + type HealthCheckInput, + HealthCheckOutput, + type IEither, + type ITraceable, + TraceUtil, +} from "@emprespresso/pengueno"; +import {} from "../../u/trace/mod.ts"; -const healthCheck = async (in: ITraceable<"healthy?", Trace>) => { - return getRequiredEnv("LAMINAR_HOST").flatMap((_host) => Either.fromFailableAsync( - getStdout(in.move(["laminarc", "show-jobs"])) - )) -} +const healthCheck = ( + input: ITraceable, +): Promise> => + input.bimap(TraceUtil.withFunctionTrace(healthCheck)) + .move(getRequiredEnv("LAMINAR_HOST")) + // we need to test LAMINAR_HOST is propagated to getStdout for other procedures + .map(({ item }) => item.moveRight(["laminarc", "show-jobs"])) + .map((i) => + i.item.mapRight(i.move.apply) + .flatMapAsync(getStdout.apply) + .then((gotJobs) => gotJobs.moveRight(HealthCheckOutput.YAASQUEEN)) + ) + .item; -export class LizCIServer { - private constructor( - private readonly healthCheckActivity = HealthCheckActivity(healthCheck), - private readonly jobHookActivity = JobHookActivity(jobQueuer) - ) {} - - private async route(req: ITraceable) { - return req.flatMap((req) => { - const { logger, item: { method, pathname } } = req; - if (pathname === "/health") { - return this.healthCheckActivity.healthCheck(req); - } - return this.jobHookActivity.processHook(req); - }); - } - - public async serve(req: Request): Promise { - return LogTraceable(req).bimap(TraceUtil.withClassTrace(this)).map(this.route) - } -} -private route( - req: Traceable, -): Traceable> { - return req.flatMap((req) => { - const { logger, item: { method, pathname } } = req; - if (pathname === "/health") { - return this.healthCheckActivity.healthCheck(req); - } - return this.jobHookActivity.processHook(req); - }); -} +//export class LizCIServer { +// private constructor( +// private readonly healthCheckActivity = HealthCheckActivity(healthCheck), +// private readonly jobHookActivity = JobHookActivity(jobQueuer) +// ) {} +// +// private async route(req: ITraceable) { +// return req.flatMap((req) => { +// const { logger, item: { method, pathname } } = req; +// if (pathname === "/health") { +// return this.healthCheckActivity.healthCheck(req); +// } +// return this.jobHookActivity.processHook(req); +// }); +// } +// +// public async serve(req: Request): Promise { +// return LogTraceable(req).bimap(TraceUtil.withClassTrace(this)).map(this.route) +// } +//} +//private route( +// req: Traceable, +//): Traceable> { +// return req.flatMap((req) => { +// const { logger, item: { method, pathname } } = req; +// if (pathname === "/health") { +// return this.healthCheckActivity.healthCheck(req); +// } +// return this.jobHookActivity.processHook(req); +// }); +//} -- cgit v1.2.3-70-g09d2