19 lines
634 B
TypeScript
19 lines
634 B
TypeScript
import { AccountEmailClaimedError } from "@spec/schemas/account/errors.ts";
|
|
import { create } from "@spec/schemas/account/routes.ts";
|
|
|
|
import { Account, isEmailClaimed } from "~stores/event-store/aggregates/account.ts";
|
|
import { eventStore } from "~stores/event-store/event-store.ts";
|
|
|
|
export default create.access("public").handle(async ({ body: { name, email } }) => {
|
|
if ((await isEmailClaimed(email)) === true) {
|
|
return new AccountEmailClaimedError(email);
|
|
}
|
|
return eventStore.aggregate
|
|
.from(Account)
|
|
.create()
|
|
.addName(name)
|
|
.addEmailStrategy(email)
|
|
.save()
|
|
.then((account) => account.id);
|
|
});
|