Files
effect-fc/packages/example/src/domain/Todo.ts
Julien Valverdé a432993ac3
All checks were successful
Lint / lint (push) Successful in 13s
Publish / publish (push) Successful in 19s
0.2.0 (#18)
Co-authored-by: Renovate Bot <renovate-bot@valverde.cloud>
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #18
2025-10-24 01:36:27 +02:00

21 lines
534 B
TypeScript

import { Schema } from "effect"
import { assertEncodedJsonifiable } from "@/lib/schema"
export class Todo extends Schema.Class<Todo>("Todo")({
_tag: Schema.tag("Todo"),
id: Schema.String,
content: Schema.String,
completedAt: Schema.OptionFromSelf(Schema.DateTimeUtcFromSelf),
}) {}
export const TodoFromJsonStruct = Schema.Struct({
...Todo.fields,
completedAt: Schema.Option(Schema.DateTimeUtc),
}).pipe(
assertEncodedJsonifiable
)
export const TodoFromJson = Schema.compose(TodoFromJsonStruct, Todo)