Co-authored-by: Renovate Bot <renovate-bot@valverde.cloud> Co-authored-by: Julien Valverdé <julien.valverde@mailo.com> Reviewed-on: #18
21 lines
534 B
TypeScript
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)
|