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"));