const create = () =>
Effect.tryPromise({
try: insertOne(todo as WithoutId<TodoModel>),
catch: (e) => new GenericTodoRepoError(e),
}).pipe(
Effect.andThen(({ insertedId }) => {
if (insertedId == null) {
return Effect.fail(
new GenericTodoRepoError("Failed to insert document"),
);
}
return read(insertedId);
}),
Effect.andThen((newTodo) => {
if (newTodo == null) {
return Effect.fail(
new GenericTodoRepoError("Failed to read inserted document"),
);
}
return Effect.succeed(newTodo);
}),
);
const create = () =>
Effect.tryPromise({
try: insertOne(todo as WithoutId<TodoModel>),
catch: (e) => new GenericTodoRepoError(e),
}).pipe(
Effect.andThen(({ insertedId }) => {
if (insertedId == null) {
return Effect.fail(
new GenericTodoRepoError("Failed to insert document"),
);
}
return read(insertedId);
}),
Effect.andThen((newTodo) => {
if (newTodo == null) {
return Effect.fail(
new GenericTodoRepoError("Failed to read inserted document"),
);
}
return Effect.succeed(newTodo);
}),
);