Skip to content

Commit 66b7611

Browse files
committed
fix(web): address openapi effect review
1 parent 753f7b4 commit 66b7611

6 files changed

Lines changed: 329 additions & 22 deletions

File tree

packages/app/src/web/api-create-project.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,30 @@ export const createProjectAcceptedBody = (draft: CreateProjectRequestDraft): Cre
3838
...optionalProjectResourceFields(draft)
3939
})
4040

41+
// CHANGE: Publish the async project creation boundary with an explicit Effect signature.
42+
// WHY: exported web API helpers must expose typed success, error, and requirement channels.
43+
// QUOTE(ТЗ): "исправь"
44+
// REF: PR#431 CodeRabbit review 4535473023
45+
// SOURCE: n/a
46+
// FORMAT THEOREM: forall draft d: accepted(d) -> Effect<CreateProjectAcceptedResponse, string, never>.
47+
// PURITY: SHELL
48+
// EFFECT: Effect<CreateProjectAcceptedResponse, string, never>
49+
// INVARIANT: only HTTP 202 is accepted as the asynchronous creation success branch.
50+
// COMPLEXITY: O(1)/O(1), excluding HTTP transport.
51+
/**
52+
* Starts asynchronous project creation through the typed OpenAPI client.
53+
*
54+
* @param draft - Validated project creation draft plus optional resource limits.
55+
* @returns Effect that resolves to the accepted async creation response.
56+
*
57+
* @pure false - performs HTTP IO when the returned Effect is executed.
58+
* @effect Effect<CreateProjectAcceptedResponse, string, never>
59+
* @invariant HTTP 202 returns the accepted response; HTTP 201 is rejected as a sync branch mismatch.
60+
* @precondition draft fields were validated by the UI create flow.
61+
* @postcondition downstream callers observe only accepted async responses or string-rendered failures.
62+
* @complexity O(1)/O(1), excluding HTTP transport and response body size.
63+
* @throws Never - failures are represented in the Effect error channel.
64+
*/
4165
export const startCreateProject = (
4266
draft: CreateProjectRequestDraft
4367
): Effect.Effect<CreateProjectAcceptedResponse, string> =>

0 commit comments

Comments
 (0)