diff --git a/packages/example/src/routes/form.tsx b/packages/example/src/routes/form.tsx index e3de805..409afdf 100644 --- a/packages/example/src/routes/form.tsx +++ b/packages/example/src/routes/form.tsx @@ -23,6 +23,20 @@ const RegisterFormSchema = Schema.Struct({ birth: Schema.OptionFromSelf(DateTimeUtcFromZonedInput), }) +const RegisterFormSubmitSchema = Schema.Struct({ + ...RegisterFormSchema.fields, + email: Schema.transformOrFail( + Schema.encodedSchema(RegisterFormSchema.fields.email), + Schema.typeSchema(RegisterFormSchema.fields.email), + { + decode: (input, _options, ast) => input !== "admin@admin.com" + ? ParseResult.succeed(input) + : ParseResult.fail(new ParseResult.Refinement(ast, input, "Predicate", "This email is already in use.")), + encode: ParseResult.succeed, + }, + ), +}) + class RegisterForm extends Effect.Service()("RegisterForm", { scoped: Form.service({ schema: RegisterFormSchema.pipe(