summaryrefslogtreecommitdiff
path: root/server/health.ts
blob: 6a1f77fdae6e0d65a8e73f3c4a98499b9989da95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import {
    getRequiredEnv,
    getStdout,
    type HealthChecker,
    type HealthCheckInput,
    HealthCheckOutput,
    type IEither,
    type ITraceable,
    type ServerTrace,
    TraceUtil,
} from '@emprespresso/pengueno';

export const healthCheck: HealthChecker = (
    input: ITraceable<HealthCheckInput, ServerTrace>,
): Promise<IEither<Error, HealthCheckOutput>> =>
    input
        .flatMap(TraceUtil.withFunctionTrace(healthCheck))
        .move(getRequiredEnv('LAMINAR_HOST'))
        // ensure LAMINAR_HOST is propagated to getStdout for other procedures
        .map((tEitherEnv) =>
            tEitherEnv.get().flatMapAsync((_hasEnv) => getStdout(tEitherEnv.move(['laminarc', 'show-jobs']))),
        )
        .map(TraceUtil.promiseify((stdout) => stdout.get().moveRight(HealthCheckOutput.YAASSSLAYQUEEN)))
        .get();