import * as Effect from "effect/Effect";import * as SqlClient from "effect/unstable/sql/SqlClient";export default Effect.gen(function* () { const sql = yield* SqlClient.SqlClient; // Project creation never exposed a model choice. A later metadata event // containing this field is the evidence that the user set or reset one. yield* sql` WITH automatically_seeded_projects AS ( SELECT created.stream_id AS project_id FROM orchestration_events AS created WHERE created.aggregate_kind = 'project' AND created.event_type = 'project.created' AND json_type(created.payload_json, '$.defaultModelSelection') IS NOT NULL AND json_type(created.payload_json, '$.defaultModelSelection') <> 'null' AND NOT EXISTS ( SELECT 1 FROM orchestration_events AS configured WHERE configured.aggregate_kind = 'project' AND configured.stream_id = created.stream_id AND configured.event_type = 'project.meta-updated' AND json_type(configured.payload_json, '$.defaultModelSelection') IS NOT NULL ) ) UPDATE projection_projects SET default_model_selection_json = NULL WHERE project_id IN (SELECT project_id FROM automatically_seeded_projects) `; yield* sql` UPDATE orchestration_events AS created SET payload_json = json_set( created.payload_json, '$.defaultModelSelection', json('null') ) WHERE created.aggregate_kind = 'project' AND created.event_type = 'project.created' AND json_type(created.payload_json, '$.defaultModelSelection') IS NOT NULL AND json_type(created.payload_json, '$.defaultModelSelection') <> 'null' AND NOT EXISTS ( SELECT 1 FROM orchestration_events AS configured WHERE configured.aggregate_kind = 'project' AND configured.stream_id = created.stream_id AND configured.event_type = 'project.meta-updated' AND json_type(configured.payload_json, '$.defaultModelSelection') IS NOT NULL ) `;});
import * as Effect from "effect/Effect";
import * as SqlClient from "effect/unstable/sql/SqlClient";
export default Effect.gen(function* () {
const sql = yield* SqlClient.SqlClient;
// Project creation never exposed a model choice. A later metadata event
// containing this field is the evidence that the user set or reset one.
yield* sql`
WITH automatically_seeded_projects AS (
SELECT created.stream_id AS project_id
FROM orchestration_events AS created
WHERE created.aggregate_kind = 'project'
AND created.event_type = 'project.created'
AND json_type(created.payload_json, '$.defaultModelSelection') IS NOT NULL
AND json_type(created.payload_json, '$.defaultModelSelection') <> 'null'
AND NOT EXISTS (
SELECT 1
FROM orchestration_events AS configured
WHERE configured.aggregate_kind = 'project'
AND configured.stream_id = created.stream_id
AND configured.event_type = 'project.meta-updated'
AND json_type(configured.payload_json, '$.defaultModelSelection') IS NOT NULL
)
)
UPDATE projection_projects
SET default_model_selection_json = NULL
WHERE project_id IN (SELECT project_id FROM automatically_seeded_projects)
`;
yield* sql`
UPDATE orchestration_events AS created
SET payload_json = json_set(
created.payload_json,
'$.defaultModelSelection',
json('null')
)
WHERE created.aggregate_kind = 'project'
AND created.event_type = 'project.created'
AND json_type(created.payload_json, '$.defaultModelSelection') IS NOT NULL
AND json_type(created.payload_json, '$.defaultModelSelection') <> 'null'
AND NOT EXISTS (
SELECT 1
FROM orchestration_events AS configured
WHERE configured.aggregate_kind = 'project'
AND configured.stream_id = created.stream_id
AND configured.event_type = 'project.meta-updated'
AND json_type(configured.payload_json, '$.defaultModelSelection') IS NOT NULL
)
`;
});