@vulog/aima-user
Version:
45 lines (38 loc) • 1.29 kB
text/typescript
import { Client } from '@vulog/aima-client';
import { z } from 'zod';
import { PersonalInformationUser, PersonalInformationUserType, personalInformationUserTypeSchema } from './types';
const searchTypes = ['email', 'username', 'phoneNumber'] as const;
export type SearchType = (typeof searchTypes)[number];
export type ResponseFind = {
content: PersonalInformationUser[];
};
const querySchema = z.object({
searchType: z.enum(searchTypes),
searchQuery: z.string().min(1),
types: z.array(personalInformationUserTypeSchema).min(1),
});
export const findUser = async (
client: Client,
searchType: SearchType,
searchQuery: string,
types: PersonalInformationUserType[]
): Promise<ResponseFind> => {
const result = querySchema.safeParse({
searchType,
searchQuery,
types,
});
if (!result.success) {
throw new TypeError('Invalid arguments', {
cause: result.error.issues,
});
}
return client
.post<ResponseFind>(
`/boapi/proxy/user/fleets/${client.clientOptions.fleetId}/users/pi/find?types=${result.data.types.join(',')}`,
{
[result.data.searchType]: result.data.searchQuery,
}
)
.then(({ data }) => data);
};