TodoRepository work

This commit is contained in:
Julien Valverdé
2024-06-27 21:55:22 +02:00
parent 91f7b90e2c
commit b49b4b19dc
7 changed files with 83 additions and 31 deletions

View File

@@ -0,0 +1,32 @@
import { Schema as S } from "@effect/schema"
import { Jsonifiable, Kind, Tag } from "@thilawyn/thilalib/effect/schema"
import { Class } from "@thilawyn/thilalib/effect/schema/class"
import type { Identifiable } from "../traits"
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),
completed: S.Boolean,
createdAt: S.DateFromSelf,
updatedAt: S.DateFromSelf,
})
implements Identifiable<"Todo", string>
{}
export const JsonifiableTodo = Todo.pipe(Jsonifiable(S.Struct({
...Todo.fields,
due: S.OptionFromNullOr(S.DateFromString),
createdAt: S.DateFromString,
updatedAt: S.DateFromString,
})))

View File

@@ -1,28 +0,0 @@
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),
completed: S.Boolean,
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,
})))

View File

@@ -1 +1 @@
export * from "./Todo"
export * from "./Todo.class"