rate/api/src/functions/user.ts

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();
};
}