import 'package:dartz/dartz.dart'; import '../../core/errors/failures.dart'; import '../../data/models/administrator_dto.dart'; /// 관리자 관리 Repository 인터페이스 (백엔드 API Administrator 테이블) /// Clean Architecture Domain Layer - Repository 계약 abstract class AdministratorRepository { /// 관리자 목록 조회 (페이지네이션 지원) /// [page] 페이지 번호 (기본값: 1) /// [pageSize] 페이지당 항목 수 (기본값: 20) /// [search] 검색어 (이름, 이메일, 전화번호) /// Returns: 페이지네이션된 관리자 목록 Future> getAdministrators({ int? page, int? pageSize, String? search, }); /// 단일 관리자 조회 /// [id] 관리자 고유 식별자 /// Returns: 관리자 상세 정보 Future> getAdministratorById(int id); /// 관리자 계정 생성 /// [administrator] 생성할 관리자 정보 /// Returns: 생성된 관리자 정보 (ID 포함) Future> createAdministrator( AdministratorRequestDto administrator, ); /// 관리자 정보 수정 /// [id] 수정할 관리자 고유 식별자 /// [administrator] 수정할 관리자 정보 /// Returns: 수정된 관리자 정보 Future> updateAdministrator( int id, AdministratorUpdateRequestDto administrator, ); /// 관리자 계정 삭제 /// [id] 삭제할 관리자 고유 식별자 /// Returns: 삭제 성공/실패 여부 Future> deleteAdministrator(int id); /// 이메일 중복 확인 /// [email] 체크할 이메일 주소 /// [excludeId] 체크에서 제외할 관리자 ID (수정 시 현재 관리자 제외용) /// Returns: 중복 여부 (true: 중복됨, false: 중복되지 않음) Future> isDuplicateEmail(String email, {int? excludeId}); /// 관리자 인증 (로그인용) /// [email] 이메일 주소 /// [password] 비밀번호 /// Returns: 인증된 관리자 정보 Future> authenticateAdministrator( String email, String password, ); }