export async function POST(
req: NextRequest,
{ params }: { params: { projectId: Project['id'] } },
) {
return DoAThing(params.projectId).pipe(
Effect.withSpan('DoAThing', {
attributes: {
url: req.url,
projectId: params.projectId,
},
parent: "please help"
}),
Effect.provideService(NextRequestTag, req),
Effect.provide(Layer.mergeAll(OtelTracingLive, SupabaseAdminLive)),
Effect.catchTag('ParseError', (error) => {
Effect.annotateCurrentSpan('otel.status_code', SpanStatusCode.ERROR);
Effect.annotateCurrentSpan('error', error);
return Effect.sync(() => NextResponse.json({ error }, { status: 400 }));
}),
Effect.catchAll((error) => {
Effect.annotateCurrentSpan('otel.status_code', SpanStatusCode.ERROR);
Effect.annotateCurrentSpan('error', error);
return Effect.sync(() =>
NextResponse.json('error' in error ? error : { error }, {
status: 500,
}),
);
}),
Effect.runPromise,
);
}
export async function POST(
req: NextRequest,
{ params }: { params: { projectId: Project['id'] } },
) {
return DoAThing(params.projectId).pipe(
Effect.withSpan('DoAThing', {
attributes: {
url: req.url,
projectId: params.projectId,
},
parent: "please help"
}),
Effect.provideService(NextRequestTag, req),
Effect.provide(Layer.mergeAll(OtelTracingLive, SupabaseAdminLive)),
Effect.catchTag('ParseError', (error) => {
Effect.annotateCurrentSpan('otel.status_code', SpanStatusCode.ERROR);
Effect.annotateCurrentSpan('error', error);
return Effect.sync(() => NextResponse.json({ error }, { status: 400 }));
}),
Effect.catchAll((error) => {
Effect.annotateCurrentSpan('otel.status_code', SpanStatusCode.ERROR);
Effect.annotateCurrentSpan('error', error);
return Effect.sync(() =>
NextResponse.json('error' in error ? error : { error }, {
status: 500,
}),
);
}),
Effect.runPromise,
);
}