Presupuestador_web/server/src/contexts/users/application/userServices.ts

60 lines
1.6 KiB
TypeScript
Raw Normal View History

2024-05-18 16:51:31 +00:00
import { IAdapter, RepositoryBuilder } from "@/contexts/common/domain";
2024-05-20 09:01:40 +00:00
import { Email, Name, UniqueID } from "@shared/contexts";
2024-05-18 16:51:31 +00:00
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));
};
2024-05-20 09:01:40 +00:00
export const existsUserByName = async (
name: Name,
adapter: IAdapter,
repository: RepositoryBuilder<IUserRepository>,
): Promise<boolean> => {
return await adapter
.startTransaction()
.complete(async (t) =>
repository({ transaction: t }).existsUserWithName(name),
);
};
2024-05-18 16:51:31 +00:00
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),
);
};