Files
superport/lib/domain/repositories/administrator_repository.dart

59 lines
2.2 KiB
Dart

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<Either<Failure, AdministratorListResponse>> getAdministrators({
int? page,
int? pageSize,
String? search,
});
/// 단일 관리자 조회
/// [id] 관리자 고유 식별자
/// Returns: 관리자 상세 정보
Future<Either<Failure, AdministratorDto>> getAdministratorById(int id);
/// 관리자 계정 생성
/// [administrator] 생성할 관리자 정보
/// Returns: 생성된 관리자 정보 (ID 포함)
Future<Either<Failure, AdministratorDto>> createAdministrator(
AdministratorRequestDto administrator,
);
/// 관리자 정보 수정
/// [id] 수정할 관리자 고유 식별자
/// [administrator] 수정할 관리자 정보
/// Returns: 수정된 관리자 정보
Future<Either<Failure, AdministratorDto>> updateAdministrator(
int id,
AdministratorUpdateRequestDto administrator,
);
/// 관리자 계정 삭제
/// [id] 삭제할 관리자 고유 식별자
/// Returns: 삭제 성공/실패 여부
Future<Either<Failure, void>> deleteAdministrator(int id);
/// 이메일 중복 확인
/// [email] 체크할 이메일 주소
/// [excludeId] 체크에서 제외할 관리자 ID (수정 시 현재 관리자 제외용)
/// Returns: 중복 여부 (true: 중복됨, false: 중복되지 않음)
Future<Either<Failure, bool>> isDuplicateEmail(String email, {int? excludeId});
/// 관리자 인증 (로그인용)
/// [email] 이메일 주소
/// [password] 비밀번호
/// Returns: 인증된 관리자 정보
Future<Either<Failure, AdministratorDto>> authenticateAdministrator(
String email,
String password,
);
}