const test = Effect.tryPromise({
try: () =>
lite
.select()
.from(edits)
.where(and(eq(edits.postId, postId), eq(edits.userId, userId))),
catch: () => new CheckPostExistError(),
}).pipe(
Effect.flatMap(
ReadonlyArray.match({
onNonEmpty: (_) => Effect.succeed(_[0]),
onEmpty: () => Effect.fail(new UserNotExistError()),
}),
),
Effect.catchTag("UserNotExistError", () =>
Effect.tryPromise({
try: () =>
lite
.insert(edits)
.values({ postId, userId, json: JSON.stringify([]) })
.returning(),
catch: () => new InsertSqliteError(),
}).pipe(Effect.map((x) => x[0])),
),
);
const test = Effect.tryPromise({
try: () =>
lite
.select()
.from(edits)
.where(and(eq(edits.postId, postId), eq(edits.userId, userId))),
catch: () => new CheckPostExistError(),
}).pipe(
Effect.flatMap(
ReadonlyArray.match({
onNonEmpty: (_) => Effect.succeed(_[0]),
onEmpty: () => Effect.fail(new UserNotExistError()),
}),
),
Effect.catchTag("UserNotExistError", () =>
Effect.tryPromise({
try: () =>
lite
.insert(edits)
.values({ postId, userId, json: JSON.stringify([]) })
.returning(),
catch: () => new InsertSqliteError(),
}).pipe(Effect.map((x) => x[0])),
),
);