The issue you're encountering with the typing of your `createUser` function is likely due to how ...
I'm getting lost in the syntax here. I'm not getting the expected typing for my main function.
const createUser: () => Effect.Effect<{
readonly id: string;
}, DatabaseError, Database>
I don't understand why my tagged ArbitraryError isn't making it.
export const createUser = () =>
Effect.gen(function* () {
const database = yield* Database;
const arb = Arbitrary.make(UserSchema);
const [arbitraryUser] = FastCheck.sample(arb, 1);
if (!arbitraryUser) {
const reason = "Failed to generate an arbitrary user.";
yield* Effect.logError(reason);
return yield* new ArbitraryError({ reason });
}
const db = yield* database.db();
yield* Effect.log(
`Arbitrary User Generated: ${JSON.stringify(arbitraryUser)}`,
);
const response = yield* Effect.tryPromise({
try: () => {
const userId = db
.insert(users)
.values({
email: arbitraryUser.email,
password: Redacted.value(arbitraryUser.password),
})
.returning({ id: users.id });
return userId;
},
catch: (reason) => {
Effect.logError(reason);
return new DatabaseError({ reason });
},
});
const userId = Schema.decodeUnknownSync(UserSchema.pick("id"))(response);
return userId;
}).pipe(Effect.withSpan("create-test-user"));export const createUser = () =>
Effect.gen(function* () {
const database = yield* Database;
const arb = Arbitrary.make(UserSchema);
const [arbitraryUser] = FastCheck.sample(arb, 1);
if (!arbitraryUser) {
const reason = "Failed to generate an arbitrary user.";
yield* Effect.logError(reason);
return yield* new ArbitraryError({ reason });
}
const db = yield* database.db();
yield* Effect.log(
`Arbitrary User Generated: ${JSON.stringify(arbitraryUser)}`,
);
const response = yield* Effect.tryPromise({
try: () => {
const userId = db
.insert(users)
.values({
email: arbitraryUser.email,
password: Redacted.value(arbitraryUser.password),
})
.returning({ id: users.id });
return userId;
},
catch: (reason) => {
Effect.logError(reason);
return new DatabaseError({ reason });
},
});
const userId = Schema.decodeUnknownSync(UserSchema.pick("id"))(response);
return userId;
}).pipe(Effect.withSpan("create-test-user"));const createUser: () => Effect.Effect<{
readonly id: string;
}, DatabaseError, Database>
I don't understand why my tagged ArbitraryError isn't making it.
