function updatePlacementDataAttribute(args: {
ctx: MutationCtx;
placementId: Id<"placements">;
dataAttributeKey: string;
dataAttributeValue: string;
}): Effect.Effect<never, UnExpectedError | PlacementNotFoundError, Id<"placements">> {
return pipe(
Effect.tryPromise({
try: () => args.ctx.db.get(args.placementId),
catch: () => new PlacementNotFoundError(),
}),
Effect.tap((placementId)=> Effect.logInfo(`result of getPlacement ${JSON.stringify(placementId)}`)),
Effect.filterOrFail(Predicate.isNotNull, () => new PlacementNotFoundError()),
Effect.tap((placementId)=> Effect.logInfo(`result of filtering ${JSON.stringify(placementId)}`)),
Effect.map((placement) => {
placement.data[args.dataAttributeKey] = args.dataAttributeValue;
return placement;
}),
Effect.tap((placement)=> Effect.logInfo(`result of updating placement with new attribute ${JSON.stringify(placement)}`)),
// Effect.map doesn't cause an error but also the operation doesn't run?
Effect.flatMap((placement) =>
Effect.tryPromise({
try: () => args.ctx.db.patch(args.placementId, placement),
catch: () => new UnExpectedError(),
})
),
Effect.tap((placementId)=> Effect.logInfo(`result of patch placement ${JSON.stringify(placementId)}`)),
Effect.map(() => args.placementId)
);
}
function updatePlacementDataAttribute(args: {
ctx: MutationCtx;
placementId: Id<"placements">;
dataAttributeKey: string;
dataAttributeValue: string;
}): Effect.Effect<never, UnExpectedError | PlacementNotFoundError, Id<"placements">> {
return pipe(
Effect.tryPromise({
try: () => args.ctx.db.get(args.placementId),
catch: () => new PlacementNotFoundError(),
}),
Effect.tap((placementId)=> Effect.logInfo(`result of getPlacement ${JSON.stringify(placementId)}`)),
Effect.filterOrFail(Predicate.isNotNull, () => new PlacementNotFoundError()),
Effect.tap((placementId)=> Effect.logInfo(`result of filtering ${JSON.stringify(placementId)}`)),
Effect.map((placement) => {
placement.data[args.dataAttributeKey] = args.dataAttributeValue;
return placement;
}),
Effect.tap((placement)=> Effect.logInfo(`result of updating placement with new attribute ${JSON.stringify(placement)}`)),
// Effect.map doesn't cause an error but also the operation doesn't run?
Effect.flatMap((placement) =>
Effect.tryPromise({
try: () => args.ctx.db.patch(args.placementId, placement),
catch: () => new UnExpectedError(),
})
),
Effect.tap((placementId)=> Effect.logInfo(`result of patch placement ${JSON.stringify(placementId)}`)),
Effect.map(() => args.placementId)
);
}