summaryrefslogtreecommitdiff
path: root/hooks/server/job/activity.ts
diff options
context:
space:
mode:
authorElizabeth <me@liz.coffee>2025-06-02 11:14:52 -0700
committerElizabeth <me@liz.coffee>2025-06-02 11:14:52 -0700
commit373d9ec700c0097a22cf665a8e33cf48998d1dc2 (patch)
tree71297ac69177037929e1bfb00b8c71038058acd5 /hooks/server/job/activity.ts
parent646c5eb11d3b9240f8434163d103a117d30c88c7 (diff)
downloadci-373d9ec700c0097a22cf665a8e33cf48998d1dc2.tar.gz
ci-373d9ec700c0097a22cf665a8e33cf48998d1dc2.zip
Minor things
Diffstat (limited to 'hooks/server/job/activity.ts')
-rw-r--r--hooks/server/job/activity.ts110
1 files changed, 0 insertions, 110 deletions
diff --git a/hooks/server/job/activity.ts b/hooks/server/job/activity.ts
deleted file mode 100644
index 173cedf..0000000
--- a/hooks/server/job/activity.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-import {
- Either,
- ErrorSource,
- type IActivity,
- type IEither,
- type ITraceable,
- jsonModel,
- JsonResponse,
- LogLevel,
- Metric,
- PenguenoError,
- type PenguenoRequest,
- type ServerTrace,
- TraceUtil,
- validateExecutionEntries,
-} from "@emprespresso/pengueno";
-import { isJob, type Job } from "@emprespresso/ci-model";
-import type { IJobQueuer } from "@emprespresso/ci-hooks";
-
-const wellFormedJobMetric = Metric.fromName("Job.WellFormed");
-
-const jobJsonTransformer = (
- j: ITraceable<unknown, ServerTrace>,
-): IEither<PenguenoError, Job> =>
- j
- .bimap(TraceUtil.withMetricTrace(wellFormedJobMetric))
- .map((tJson) => {
- if (!isJob(tJson) || !validateExecutionEntries(tJson)) {
- const err = "seems like a pwetty mawfomed job \\(-.-)/";
- tJson.trace.addTrace(LogLevel.WARN).trace(err);
- return Either.left<PenguenoError, Job>(new PenguenoError(err, 400));
- }
- return Either.right<PenguenoError, Job>(tJson);
- })
- .peek((tJob) =>
- tJob.trace.trace(
- tJob
- .get()
- .fold((err) =>
- err ? wellFormedJobMetric.failure : wellFormedJobMetric.success,
- ),
- ),
- )
- .get();
-
-export interface IJobHookActivity {
- processHook: IActivity;
-}
-
-const jobHookRequestMetric = Metric.fromName("JobHook.process");
-export class JobHookActivityImpl implements IJobHookActivity {
- constructor(
- private readonly queuer: IJobQueuer<ITraceable<Job, ServerTrace>>,
- ) {}
-
- private trace(r: ITraceable<PenguenoRequest, ServerTrace>) {
- return r
- .bimap(TraceUtil.withClassTrace(this))
- .bimap(TraceUtil.withMetricTrace(jobHookRequestMetric));
- }
-
- public processHook(r: ITraceable<PenguenoRequest, ServerTrace>) {
- return this.trace(r)
- .map(jsonModel(jobJsonTransformer))
- .map(async (tEitherJobJson) => {
- const eitherJob = await tEitherJobJson.get();
- return eitherJob.flatMapAsync(async (job) => {
- const eitherQueued = await tEitherJobJson
- .move(job)
- .map(this.queuer.queue)
- .get();
- return eitherQueued.mapLeft((e) => new PenguenoError(e.message, 500));
- });
- })
- .peek(
- TraceUtil.promiseify((tJob) =>
- tJob
- .get()
- .fold(
- (err: PenguenoError | undefined, _val: string | undefined) => {
- if (!err) {
- tJob.trace.trace(jobHookRequestMetric.success);
- tJob.trace.trace(
- `all queued up and weady to go :D !! ${_val}`,
- );
- return;
- }
- tJob.trace.trace(
- err.source === ErrorSource.SYSTEM
- ? jobHookRequestMetric.failure
- : jobHookRequestMetric.warn,
- );
- tJob.trace.addTrace(err.source).trace(`${err}`);
- },
- ),
- ),
- )
- .map(
- TraceUtil.promiseify(
- (tEitherQueuedJob) =>
- new JsonResponse(r, tEitherQueuedJob.get(), {
- status: tEitherQueuedJob
- .get()
- .fold(({ status }, _val) => (_val ? 200 : status)),
- }),
- ),
- )
- .get();
- }
-}