27 lines · 822 B · TypeScript
RawDownload
import * as SqlClient from "effect/unstable/sql/SqlClient";import * as Effect from "effect/Effect"; export default Effect.gen(function* () {  const sql = yield* SqlClient.SqlClient;   yield* sql`    DELETE FROM projection_pending_approvals    WHERE NOT EXISTS (      SELECT 1      FROM projection_thread_activities AS activity      WHERE activity.kind = 'approval.requested'        AND json_extract(activity.payload_json, '$.requestId')          = projection_pending_approvals.request_id    )  `;   yield* sql`    UPDATE projection_threads    SET pending_approval_count = COALESCE((      SELECT COUNT(*)      FROM projection_pending_approvals      WHERE projection_pending_approvals.thread_id = projection_threads.thread_id        AND projection_pending_approvals.status = 'pending'    ), 0)  `;});