admin area
This commit is contained in:
51
core/admin/application/ports/IAdminUserRepository.ts
Normal file
51
core/admin/application/ports/IAdminUserRepository.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import { AdminUser } from '../../domain/entities/AdminUser';
|
||||
import { UserId } from '../../domain/value-objects/UserId';
|
||||
import { Email } from '../../domain/value-objects/Email';
|
||||
import { UserRole } from '../../domain/value-objects/UserRole';
|
||||
import { UserStatus } from '../../domain/value-objects/UserStatus';
|
||||
|
||||
export interface UserFilter {
|
||||
role?: UserRole;
|
||||
status?: UserStatus;
|
||||
email?: Email;
|
||||
search?: string;
|
||||
}
|
||||
|
||||
export interface UserSort {
|
||||
field: 'email' | 'displayName' | 'createdAt' | 'lastLoginAt' | 'status';
|
||||
direction: 'asc' | 'desc';
|
||||
}
|
||||
|
||||
export interface UserPagination {
|
||||
page: number;
|
||||
limit: number;
|
||||
}
|
||||
|
||||
export interface UserListQuery {
|
||||
filter?: UserFilter;
|
||||
sort?: UserSort | undefined;
|
||||
pagination?: UserPagination | undefined;
|
||||
}
|
||||
|
||||
export interface UserListResult {
|
||||
users: AdminUser[];
|
||||
total: number;
|
||||
page: number;
|
||||
limit: number;
|
||||
totalPages: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output port for user management operations
|
||||
* Implemented by infrastructure layer
|
||||
*/
|
||||
export interface IAdminUserRepository {
|
||||
findById(id: UserId): Promise<AdminUser | null>;
|
||||
findByEmail(email: Email): Promise<AdminUser | null>;
|
||||
emailExists(email: Email): Promise<boolean>;
|
||||
list(query?: UserListQuery): Promise<UserListResult>;
|
||||
count(filter?: UserFilter): Promise<number>;
|
||||
create(user: AdminUser): Promise<AdminUser>;
|
||||
update(user: AdminUser): Promise<AdminUser>;
|
||||
delete(id: UserId): Promise<void>;
|
||||
}
|
||||
Reference in New Issue
Block a user