59 lines
2.2 KiB
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,
|
|
);
|
|
} |