refactor(wyatt_architecture): upgrade usecases to add NoParams

This commit is contained in:
2024-02-18 22:49:11 +01:00
parent 41382aad2f
commit 59bca9045e
31 changed files with 220 additions and 385 deletions
@@ -88,8 +88,8 @@ class PhotoRepositoryImpl extends PhotoRepository {
}
return Ok(response);
} catch (_) {
return const Err(
ClientException('Cannot retrieve all photos from favorites.'),
return Err(
const ClientException('Cannot retrieve all photos from favorites.'),
);
}
}
@@ -17,7 +17,7 @@
import 'package:architecture_example/domain/entities/photo.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
abstract class FavoriteLocalDataSource extends BaseLocalDataSource {
abstract class FavoriteLocalDataSource extends BaseDataSource {
Future<void> addPhotoToFavorites(Photo photo);
Future<void> deletePhotoFromFavorites(int id);
Future<List<int>> getAllPhotosFromFavorites();
@@ -17,7 +17,7 @@
import 'package:architecture_example/domain/entities/album.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
abstract class AlbumRemoteDataSource extends BaseRemoteDataSource {
abstract class AlbumRemoteDataSource extends BaseDataSource {
Future<Album> getAlbum(int id);
Future<List<Album>> getAllAlbums({int? start, int? limit});
}
@@ -17,7 +17,7 @@
import 'package:architecture_example/domain/entities/photo.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
abstract class PhotoRemoteDataSource extends BaseRemoteDataSource {
abstract class PhotoRemoteDataSource extends BaseDataSource {
Future<Photo> getPhoto(int id);
Future<List<Photo>> getAllPhotos({int? start, int? limit});
Future<List<Photo>> getPhotosFromAlbum(int albumId, {int? start, int? limit});
@@ -14,26 +14,17 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'dart:async';
import 'package:architecture_example/domain/entities/photo.dart';
import 'package:architecture_example/domain/repositories/photo_repository.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
class AddPhotoToFavorites extends AsyncUseCase<Photo, List<Photo>> {
AddPhotoToFavorites(this._photoRepository);
const AddPhotoToFavorites(this._photoRepository);
final PhotoRepository _photoRepository;
@override
FutureOrResult<List<Photo>> execute(Photo? params) async {
await _photoRepository.addPhotoToFavorites(params!);
FutureOrResult<List<Photo>> execute(Photo params) async {
await _photoRepository.addPhotoToFavorites(params);
return _photoRepository.getAllPhotosFromFavorites();
}
@override
FutureOr<void> onStart(Photo? params) {
if (params == null) {
throw const ClientException('Photo cannot be null');
}
}
}
@@ -14,23 +14,14 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'dart:async';
import 'package:architecture_example/domain/repositories/photo_repository.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
class CheckIfPhotoIsInFavorites extends AsyncUseCase<int, bool> {
CheckIfPhotoIsInFavorites(this._photoRepository);
const CheckIfPhotoIsInFavorites(this._photoRepository);
final PhotoRepository _photoRepository;
@override
FutureOrResult<bool> execute(int? params) async =>
_photoRepository.checkIfPhotoIsInFavorites(params!);
@override
FutureOr<void> onStart(int? params) {
if (params == null) {
throw const ClientException('id cannot be null');
}
}
FutureOrResult<bool> execute(int params) async =>
_photoRepository.checkIfPhotoIsInFavorites(params);
}
@@ -18,12 +18,12 @@ import 'package:architecture_example/domain/entities/photo.dart';
import 'package:architecture_example/domain/repositories/photo_repository.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
class DisplayFavorites extends AsyncUseCase<NoParam, List<Photo>> {
DisplayFavorites(this._photoRepository);
class DisplayFavorites extends NoParamsAsyncUseCase<List<Photo>> {
const DisplayFavorites(this._photoRepository);
final PhotoRepository _photoRepository;
@override
FutureOrResult<List<Photo>> execute(void params) {
FutureOrResult<List<Photo>> execute() {
final photos = _photoRepository.getAllPhotosFromFavorites();
return photos;
}
@@ -14,26 +14,17 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'dart:async';
import 'package:architecture_example/domain/entities/photo.dart';
import 'package:architecture_example/domain/repositories/photo_repository.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
class DisplayPhoto extends AsyncUseCase<int, Photo> {
DisplayPhoto(this._photoRepository);
const DisplayPhoto(this._photoRepository);
final PhotoRepository _photoRepository;
@override
FutureOrResult<Photo> execute(int? params) {
final photo = _photoRepository.getPhoto(params!);
FutureOrResult<Photo> execute(int params) {
final photo = _photoRepository.getPhoto(params);
return photo;
}
@override
FutureOr<void> onStart(int? params) {
if (params == null) {
throw const ClientException('id cannot be null');
}
}
}
@@ -14,32 +14,23 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'dart:async';
import 'package:architecture_example/domain/entities/photo.dart';
import 'package:architecture_example/domain/repositories/photo_repository.dart';
import 'package:architecture_example/domain/usecases/photos/params/query_parameters.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
class OpenAlbum extends AsyncUseCase<QueryParameters, List<Photo>> {
OpenAlbum(this._photoRepository);
const OpenAlbum(this._photoRepository);
final PhotoRepository _photoRepository;
@override
FutureOrResult<List<Photo>> execute(QueryParameters? params) {
FutureOrResult<List<Photo>> execute(QueryParameters params) {
final photos = _photoRepository.getPhotosFromAlbum(
params!.albumId,
params.albumId,
start: params.start,
limit: params.limit,
);
return photos;
}
@override
FutureOr<void> onStart(QueryParameters? params) {
if (params == null) {
throw const ClientException('params cannot be null');
}
}
}
@@ -14,26 +14,17 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'dart:async';
import 'package:architecture_example/domain/entities/photo.dart';
import 'package:architecture_example/domain/repositories/photo_repository.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
class RemovePhotoFromFavorites extends AsyncUseCase<int, List<Photo>> {
RemovePhotoFromFavorites(this._photoRepository);
const RemovePhotoFromFavorites(this._photoRepository);
final PhotoRepository _photoRepository;
@override
FutureOrResult<List<Photo>> execute(int? params) async {
await _photoRepository.deletePhotoFromFavorites(params!);
FutureOrResult<List<Photo>> execute(int params) async {
await _photoRepository.deletePhotoFromFavorites(params);
return _photoRepository.getAllPhotosFromFavorites();
}
@override
FutureOr<void> onStart(int? params) {
if (params == null) {
throw const ClientException('id cannot be null');
}
}
}
@@ -14,30 +14,21 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'dart:async';
import 'package:architecture_example/domain/entities/album.dart';
import 'package:architecture_example/domain/repositories/photo_repository.dart';
import 'package:architecture_example/domain/usecases/photos/params/query_parameters.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart';
class RetrieveAllAlbums extends AsyncUseCase<QueryParameters, List<Album>> {
RetrieveAllAlbums(this._photoRepository);
const RetrieveAllAlbums(this._photoRepository);
final PhotoRepository _photoRepository;
@override
FutureOrResult<List<Album>> execute(QueryParameters? params) {
FutureOrResult<List<Album>> execute(QueryParameters params) {
final albums = _photoRepository.getAllAlbums(
start: params!.start,
start: params.start,
limit: params.limit,
);
return albums;
}
@override
FutureOr<void> onStart(QueryParameters? params) {
if (params == null) {
throw const ClientException('params cannot be null');
}
}
}