refactor(form): model links as fields (#36129)

This commit is contained in:
Aiden Cline 2026-07-10 00:22:01 -05:00 committed by GitHub
commit a6449cb45c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 2409 additions and 1430 deletions

View file

@ -44,29 +44,21 @@ export const FormHandler = HttpApiBuilder.group(Api, "server.form", (handlers) =
"session.form.create",
Effect.fn(function* (ctx) {
const form = yield* Form.Service
const common = {
id: ctx.payload.id,
sessionID: ctx.params.sessionID,
title: ctx.payload.title,
metadata: ctx.payload.metadata,
}
const input = yield* (() => {
if (ctx.payload.mode === "form") {
if (!ctx.payload.fields) {
return new InvalidRequestError({ message: "Form fields are required", field: "fields" })
}
return Effect.succeed({ ...common, mode: "form" as const, fields: ctx.payload.fields })
}
if (!ctx.payload.url) return new InvalidRequestError({ message: "Form URL is required", field: "url" })
return Effect.succeed({ ...common, mode: "url" as const, url: ctx.payload.url })
})()
const created = yield* form.create(input).pipe(
Effect.catchTags({
"Form.AlreadyExistsError": (error) => new ConflictError({ resource: error.id, message: error.message }),
"Form.InvalidFormError": (error) => new InvalidRequestError({ message: error.message, field: "fields" }),
}),
)
const created = yield* form
.create({
id: ctx.payload.id,
sessionID: ctx.params.sessionID,
title: ctx.payload.title,
metadata: ctx.payload.metadata,
fields: ctx.payload.fields,
})
.pipe(
Effect.catchTags({
"Form.AlreadyExistsError": (error) => new ConflictError({ resource: error.id, message: error.message }),
"Form.InvalidFormError": (error) =>
new InvalidRequestError({ message: error.message, field: "fields" }),
}),
)
return { data: created }
}),
)