50 lines
937 B
TypeScript
50 lines
937 B
TypeScript
/**
|
|
* Domain Repository: IUserRepository
|
|
*
|
|
* Repository interface for User entity operations.
|
|
*/
|
|
|
|
import type { AuthenticatedUserDTO } from '../../application/dto/AuthenticatedUserDTO';
|
|
|
|
export interface UserCredentials {
|
|
email: string;
|
|
passwordHash: string;
|
|
salt: string;
|
|
}
|
|
|
|
export interface StoredUser {
|
|
id: string;
|
|
email: string;
|
|
displayName: string;
|
|
passwordHash: string;
|
|
salt: string;
|
|
primaryDriverId?: string;
|
|
createdAt: Date;
|
|
}
|
|
|
|
export interface IUserRepository {
|
|
/**
|
|
* Find user by email
|
|
*/
|
|
findByEmail(email: string): Promise<StoredUser | null>;
|
|
|
|
/**
|
|
* Find user by ID
|
|
*/
|
|
findById(id: string): Promise<StoredUser | null>;
|
|
|
|
/**
|
|
* Create a new user
|
|
*/
|
|
create(user: StoredUser): Promise<StoredUser>;
|
|
|
|
/**
|
|
* Update user
|
|
*/
|
|
update(user: StoredUser): Promise<StoredUser>;
|
|
|
|
/**
|
|
* Check if email exists
|
|
*/
|
|
emailExists(email: string): Promise<boolean>;
|
|
} |