27 lines
705 B
TypeScript
27 lines
705 B
TypeScript
import { Schema as S } from "@effect/schema"
|
|
import { Jsonifiable, Kind, Tag } from "@thilawyn/thilalib/effect/schema"
|
|
import { Class } from "@thilawyn/thilalib/effect/schema/class"
|
|
|
|
|
|
export class Todo extends Class<Todo>("Todo")({
|
|
_kind: Kind("Todo"),
|
|
_tag: Tag("Todo"),
|
|
|
|
id: S.String,
|
|
title: S.String,
|
|
content: S.String,
|
|
|
|
due: S.OptionFromSelf(S.DateFromSelf),
|
|
createdAt: S.DateFromSelf,
|
|
updatedAt: S.DateFromSelf,
|
|
}) {}
|
|
|
|
|
|
export const JsonifiableTodo = Todo.pipe(Jsonifiable(S.Struct({
|
|
...Todo.fields,
|
|
|
|
due: S.OptionFromNullOr(S.DateFromString),
|
|
createdAt: S.DateFromString,
|
|
updatedAt: S.DateFromString,
|
|
})))
|