1 | import { Context, IUser, IUserCreateRequest, IUserUpdates } from '..';
|
2 | import { LoginIdentifierRepository } from './login-identifier.repository';
|
3 | export declare const USER_SERVICE = "UserService";
|
4 | export declare const normaliseEmail: (email: string) => string;
|
5 | export interface UserService<T extends IUser, U extends IUserUpdates = IUserUpdates, C extends IUserCreateRequest & U = IUserCreateRequest & U> {
|
6 | getByEmail(context: Context, email: string): Promise<T | undefined>;
|
7 | get(context: Context, userId: string): Promise<T | undefined>;
|
8 | createOrUpdate(context: Context, user: C, beforeUpdate?: (user: T) => void): Promise<T>;
|
9 | create(context: Context, user: C): Promise<T>;
|
10 | update(context: Context, id: string, updates: U): Promise<T>;
|
11 | }
|
12 | export declare abstract class AbstractUserService<T extends IUser, U extends IUserUpdates = IUserUpdates, C extends IUserCreateRequest & U = IUserCreateRequest & U> implements UserService<T, U, C> {
|
13 | protected readonly loginIdentifierRepository: LoginIdentifierRepository;
|
14 | private readonly baseLogger;
|
15 | protected constructor(loginIdentifierRepository: LoginIdentifierRepository);
|
16 | abstract get(context: Context, userId: string): Promise<T | undefined>;
|
17 | protected abstract createUser(context: Context, user: C): Promise<T>;
|
18 | protected abstract updateUser(context: Context, user: T, updates: U): Promise<T>;
|
19 | getByEmail(context: Context, email: string): Promise<T | undefined>;
|
20 | createOrUpdate(context: Context, updates: C, beforeUpdate?: (user: T) => void): Promise<T>;
|
21 | create(context: Context, user: C): Promise<T>;
|
22 | update(context: Context, id: string, updates: U): Promise<T>;
|
23 | private updateRetrievedUser;
|
24 | private createLoginIdentifier;
|
25 | private validateEmailAddressAvailable;
|
26 | }
|