48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { CreateUserBody, LoginUserBody, UserInfo, UpdateUserBody } from '@core';
|
|
import { Services } from '../app';
|
|
import { UserWithPassword } from '../entities/user';
|
|
|
|
export function LoginUser(
|
|
services: Services,
|
|
): (tracker: string, raw: LoginUserBody) => Promise<UserInfo> {
|
|
const { userModel } = services;
|
|
|
|
return async (tracker, raw) => {
|
|
const user = await userModel.login(tracker, raw);
|
|
return user.Info();
|
|
};
|
|
}
|
|
|
|
export function CreateUser(
|
|
services: Services,
|
|
): (tracker: string, raw: CreateUserBody) => Promise<UserInfo> {
|
|
const { userModel } = services;
|
|
|
|
return async (tracker, raw) => {
|
|
const user = await userModel.create(tracker, new UserWithPassword(raw));
|
|
return user.Info();
|
|
};
|
|
}
|
|
|
|
export function ReadUser(
|
|
services: Services,
|
|
): (tracker: string, uuid: string) => Promise<UserInfo> {
|
|
const { userModel } = services;
|
|
|
|
return async (tracker, uuid) => {
|
|
const user = await userModel.read(tracker, uuid);
|
|
return user.Info();
|
|
};
|
|
}
|
|
|
|
export function UpdateUser(
|
|
services: Services,
|
|
): (tracker: string, uuid: string, raw: UpdateUserBody) => Promise<UserInfo> {
|
|
const { userModel } = services;
|
|
|
|
return async (tracker, uuid, raw) => {
|
|
const user = await userModel.update(tracker, uuid, raw);
|
|
return user.Info();
|
|
};
|
|
}
|