import 'package:dartz/dartz.dart';
import '../../core/errors/failures.dart';
import '../../data/models/model/model_dto.dart';

/// Models 관리 Repository 인터페이스
abstract class ModelRepository {
  /// 모델 목록 조회 (페이지네이션 지원)
  Future<Either<Failure, ModelListDto>> getModels({
    int? page,
    int? perPage,
    String? search,
    int? vendorId,
    bool? includeDeleted,
  });

  /// 모델 상세 조회
  Future<Either<Failure, ModelDto>> getModelDetail(int id);

  /// 모델 생성
  Future<Either<Failure, ModelDto>> createModel(CreateModelRequest request);

  /// 모델 수정
  Future<Either<Failure, ModelDto>> updateModel(int id, UpdateModelRequest request);

  /// 모델 삭제 (소프트 삭제)
  Future<Either<Failure, void>> deleteModel(int id);

  /// 모델 복구 (Soft Delete 복원)
  Future<Either<Failure, ModelDto>> restoreModel(int id);

  /// 제조사별 모델 목록 조회
  Future<Either<Failure, List<ModelDto>>> getModelsByVendor(int vendorId);
}