import 'package:dartz/dartz.dart'; import 'package:injectable/injectable.dart'; import '../../../data/models/common/pagination_params.dart'; import '../../../data/models/license/license_dto.dart'; import '../../../data/repositories/license_repository.dart'; import '../../../core/errors/failures.dart'; import '../base_usecase.dart'; /// 라이선스 목록 조회 UseCase @injectable class GetLicensesUseCase implements UseCase { final LicenseRepository repository; GetLicensesUseCase(this.repository); @override Future> call(GetLicensesParams params) async { try { final licenses = await repository.getLicenses( page: params.page, perPage: params.perPage, search: params.search, filters: params.filters, ); return Right(licenses); } catch (e) { return Left(ServerFailure(message: e.toString())); } } } /// 라이선스 목록 조회 파라미터 class GetLicensesParams { final int page; final int perPage; final String? search; final Map? filters; GetLicensesParams({ this.page = 1, this.perPage = 20, this.search, this.filters, }); /// PaginationParams로부터 변환 factory GetLicensesParams.fromPaginationParams(PaginationParams params) { return GetLicensesParams( page: params.page, perPage: params.perPage, search: params.search, filters: params.filters, ); } }