48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
|
|
import { IAdapter, RepositoryBuilder } from "@/contexts/common/domain";
|
||
|
|
import { Email, UniqueID } from "@shared/contexts";
|
||
|
|
import { IUserRepository, User } from "../domain";
|
||
|
|
|
||
|
|
export const existsUserByID = async (
|
||
|
|
id: UniqueID,
|
||
|
|
adapter: IAdapter,
|
||
|
|
repository: RepositoryBuilder<IUserRepository>,
|
||
|
|
): Promise<boolean> => {
|
||
|
|
return await adapter
|
||
|
|
.startTransaction()
|
||
|
|
.complete(async (t) => repository({ transaction: t }).existsUserWithId(id));
|
||
|
|
};
|
||
|
|
|
||
|
|
export const findUserByID = async (
|
||
|
|
id: UniqueID,
|
||
|
|
adapter: IAdapter,
|
||
|
|
repository: RepositoryBuilder<IUserRepository>,
|
||
|
|
): Promise<User | null> => {
|
||
|
|
return await adapter
|
||
|
|
.startTransaction()
|
||
|
|
.complete(async (t) => repository({ transaction: t }).getById(id));
|
||
|
|
};
|
||
|
|
|
||
|
|
export const existsUserByEmail = async (
|
||
|
|
email: Email,
|
||
|
|
adapter: IAdapter,
|
||
|
|
repository: RepositoryBuilder<IUserRepository>,
|
||
|
|
): Promise<boolean> => {
|
||
|
|
return await adapter
|
||
|
|
.startTransaction()
|
||
|
|
.complete(async (t) =>
|
||
|
|
repository({ transaction: t }).existsUserWithEmail(email),
|
||
|
|
);
|
||
|
|
};
|
||
|
|
|
||
|
|
export const findUserByEmail = async (
|
||
|
|
email: Email,
|
||
|
|
adapter: IAdapter,
|
||
|
|
repository: RepositoryBuilder<IUserRepository>,
|
||
|
|
): Promise<User | null> => {
|
||
|
|
return await adapter
|
||
|
|
.startTransaction()
|
||
|
|
.complete(async (t) =>
|
||
|
|
repository({ transaction: t }).findUserByEmail(email),
|
||
|
|
);
|
||
|
|
};
|