fix(crud)!: use FutureOrResult extension (close #42)
This commit is contained in:
		
							parent
							
								
									626d951443
								
							
						
					
					
						commit
						3886ef080e
					
				| @ -30,7 +30,7 @@ class CrudRepositoryImpl<Model extends ObjectModel> | |||||||
|   }) : _crudDataSource = crudDataSource; |   }) : _crudDataSource = crudDataSource; | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> create(Model object, {String? id}) => |   FutureOrResult<void> create(Model object, {String? id}) => | ||||||
|       Result.tryCatchAsync<void, AppException, AppException>( |       Result.tryCatchAsync<void, AppException, AppException>( | ||||||
|         () async { |         () async { | ||||||
|           await _crudDataSource.create(object, id: id); |           await _crudDataSource.create(object, id: id); | ||||||
| @ -39,21 +39,21 @@ class CrudRepositoryImpl<Model extends ObjectModel> | |||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<Model?> get(String id) => |   FutureOrResult<Model?> get(String id) => | ||||||
|       Result.tryCatchAsync<Model?, AppException, AppException>( |       Result.tryCatchAsync<Model?, AppException, AppException>( | ||||||
|         () async => _crudDataSource.get(id), |         () async => _crudDataSource.get(id), | ||||||
|         (error) => error, |         (error) => error, | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<List<Model?>> getAll() => |   FutureOrResult<List<Model?>> getAll() => | ||||||
|       Result.tryCatchAsync<List<Model?>, AppException, AppException>( |       Result.tryCatchAsync<List<Model?>, AppException, AppException>( | ||||||
|         () async => _crudDataSource.getAll(), |         () async => _crudDataSource.getAll(), | ||||||
|         (error) => error, |         (error) => error, | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> update( |   FutureOrResult<void> update( | ||||||
|     String id, { |     String id, { | ||||||
|     Model? object, |     Model? object, | ||||||
|     Map<String, dynamic>? raw, |     Map<String, dynamic>? raw, | ||||||
| @ -64,28 +64,28 @@ class CrudRepositoryImpl<Model extends ObjectModel> | |||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> updateAll(Map<String, Object?> raw) => |   FutureOrResult<void> updateAll(Map<String, Object?> raw) => | ||||||
|       Result.tryCatchAsync<void, AppException, AppException>( |       Result.tryCatchAsync<void, AppException, AppException>( | ||||||
|         () async => _crudDataSource.updateAll(raw), |         () async => _crudDataSource.updateAll(raw), | ||||||
|         (error) => error, |         (error) => error, | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> delete(String id) => |   FutureOrResult<void> delete(String id) => | ||||||
|       Result.tryCatchAsync<void, AppException, AppException>( |       Result.tryCatchAsync<void, AppException, AppException>( | ||||||
|         () async => _crudDataSource.delete(id), |         () async => _crudDataSource.delete(id), | ||||||
|         (error) => error, |         (error) => error, | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> deleteAll() => |   FutureOrResult<void> deleteAll() => | ||||||
|       Result.tryCatchAsync<void, AppException, AppException>( |       Result.tryCatchAsync<void, AppException, AppException>( | ||||||
|         () async => _crudDataSource.deleteAll(), |         () async => _crudDataSource.deleteAll(), | ||||||
|         (error) => error, |         (error) => error, | ||||||
|       ); |       ); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<List<Model?>> query(List<QueryInterface> conditions) => |   FutureOrResult<List<Model?>> query(List<QueryInterface> conditions) => | ||||||
|       Result.tryCatchAsync<List<Model?>, AppException, AppException>( |       Result.tryCatchAsync<List<Model?>, AppException, AppException>( | ||||||
|         () async => _crudDataSource.query(conditions), |         () async => _crudDataSource.query(conditions), | ||||||
|         (error) => error, |         (error) => error, | ||||||
|  | |||||||
| @ -20,18 +20,18 @@ import 'package:wyatt_crud_bloc/src/domain/entities/query.dart'; | |||||||
| 
 | 
 | ||||||
| abstract class CrudRepository<Model extends ObjectModel> | abstract class CrudRepository<Model extends ObjectModel> | ||||||
|     extends BaseRepository { |     extends BaseRepository { | ||||||
|   FutureResult<void> create(Model object, {String? id}); |   FutureOrResult<void> create(Model object, {String? id}); | ||||||
|   FutureResult<Model?> get(String id); |   FutureOrResult<Model?> get(String id); | ||||||
|   FutureResult<List<Model?>> getAll(); |   FutureOrResult<List<Model?>> getAll(); | ||||||
|   FutureResult<void> update( |   FutureOrResult<void> update( | ||||||
|     String id, { |     String id, { | ||||||
|     Model? object, |     Model? object, | ||||||
|     Map<String, dynamic>? raw, |     Map<String, dynamic>? raw, | ||||||
|   }); |   }); | ||||||
|   FutureResult<void> updateAll(Map<String, Object?> raw); |   FutureOrResult<void> updateAll(Map<String, Object?> raw); | ||||||
|   FutureResult<void> delete(String id); |   FutureOrResult<void> delete(String id); | ||||||
|   FutureResult<void> deleteAll(); |   FutureOrResult<void> deleteAll(); | ||||||
|   FutureResult<List<Model?>> query(List<QueryInterface> conditions); |   FutureOrResult<List<Model?>> query(List<QueryInterface> conditions); | ||||||
|   StreamResult<List<Model?>> stream({ |   StreamResult<List<Model?>> stream({ | ||||||
|     String? id, |     String? id, | ||||||
|     List<QueryInterface>? conditions, |     List<QueryInterface>? conditions, | ||||||
|  | |||||||
| @ -15,15 +15,24 @@ | |||||||
| // You should have received a copy of the GNU General Public License | // You should have received a copy of the GNU General Public License | ||||||
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | // along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
|  | import 'dart:async'; | ||||||
|  | 
 | ||||||
| import 'package:wyatt_architecture/wyatt_architecture.dart'; | import 'package:wyatt_architecture/wyatt_architecture.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | ||||||
| 
 | 
 | ||||||
| class Create<Model extends ObjectModel> extends UseCase<Model, void> { | class Create<Model extends ObjectModel> extends AsyncUseCase<Model, void> { | ||||||
|   final CrudRepository<Model> _crudRepository; |   final CrudRepository<Model> _crudRepository; | ||||||
| 
 | 
 | ||||||
|   Create(this._crudRepository); |   Create(this._crudRepository); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> call(Model params) => _crudRepository.create(params); |   FutureOr<void> onStart(Model? params) { | ||||||
|  |     if(params == null){ | ||||||
|  |       throw ClientException('$Model cannot be null.'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<void> call(Model? params) => _crudRepository.create(params!); | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,15 +14,24 @@ | |||||||
| // You should have received a copy of the GNU General Public License | // You should have received a copy of the GNU General Public License | ||||||
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | // along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
|  | import 'dart:async'; | ||||||
|  | 
 | ||||||
| import 'package:wyatt_architecture/wyatt_architecture.dart'; | import 'package:wyatt_architecture/wyatt_architecture.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | ||||||
| 
 | 
 | ||||||
| class Delete<Model extends ObjectModel> extends UseCase<String, void> { | class Delete<Model extends ObjectModel> extends AsyncUseCase<String, void> { | ||||||
|   final CrudRepository<Model> _crudRepository; |   final CrudRepository<Model> _crudRepository; | ||||||
| 
 | 
 | ||||||
|   Delete(this._crudRepository); |   Delete(this._crudRepository); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> call(String params) => _crudRepository.delete(params); |   FutureOr<void> onStart(String? params) { | ||||||
|  |     if(params == null){ | ||||||
|  |       throw ClientException('Id cannot be null.'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<void> call(String? params) => _crudRepository.delete(params!); | ||||||
| } | } | ||||||
|  | |||||||
| @ -18,11 +18,11 @@ import 'package:wyatt_architecture/wyatt_architecture.dart'; | |||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | ||||||
| 
 | 
 | ||||||
| class DeleteAll<Model extends ObjectModel> extends UseCase<void, void> { | class DeleteAll<Model extends ObjectModel> extends AsyncUseCase<void, void> { | ||||||
|   final CrudRepository<Model> _crudRepository; |   final CrudRepository<Model> _crudRepository; | ||||||
| 
 | 
 | ||||||
|   DeleteAll(this._crudRepository); |   DeleteAll(this._crudRepository); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> call(void params) => _crudRepository.deleteAll(); |   FutureOrResult<void> call(void params) => _crudRepository.deleteAll(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,15 +14,24 @@ | |||||||
| // You should have received a copy of the GNU General Public License | // You should have received a copy of the GNU General Public License | ||||||
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | // along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
|  | import 'dart:async'; | ||||||
|  | 
 | ||||||
| import 'package:wyatt_architecture/wyatt_architecture.dart'; | import 'package:wyatt_architecture/wyatt_architecture.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | ||||||
| 
 | 
 | ||||||
| class Get<Model extends ObjectModel> extends UseCase<String, Model?> { | class Get<Model extends ObjectModel> extends AsyncUseCase<String, Model?> { | ||||||
|   final CrudRepository<Model> _crudRepository; |   final CrudRepository<Model> _crudRepository; | ||||||
| 
 | 
 | ||||||
|   Get(this._crudRepository); |   Get(this._crudRepository); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<Model?> call(String params) => _crudRepository.get(params); |   FutureOr<void> onStart(String? params) { | ||||||
|  |     if(params == null){ | ||||||
|  |       throw ClientException('Id cannot be null.'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<Model?> call(String? params) => _crudRepository.get(params!); | ||||||
| } | } | ||||||
|  | |||||||
| @ -18,11 +18,12 @@ import 'package:wyatt_architecture/wyatt_architecture.dart'; | |||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | ||||||
| 
 | 
 | ||||||
| class GetAll<Model extends ObjectModel> extends UseCase<void, List<Model?>> { | class GetAll<Model extends ObjectModel> | ||||||
|  |     extends AsyncUseCase<void, List<Model?>> { | ||||||
|   final CrudRepository<Model> _crudRepository; |   final CrudRepository<Model> _crudRepository; | ||||||
| 
 | 
 | ||||||
|   GetAll(this._crudRepository); |   GetAll(this._crudRepository); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<List<Model?>> call(void params) => _crudRepository.getAll(); |   FutureOrResult<List<Model?>> call(void params) => _crudRepository.getAll(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,18 +14,27 @@ | |||||||
| // You should have received a copy of the GNU General Public License | // You should have received a copy of the GNU General Public License | ||||||
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | // along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
|  | import 'dart:async'; | ||||||
|  | 
 | ||||||
| import 'package:wyatt_architecture/wyatt_architecture.dart'; | import 'package:wyatt_architecture/wyatt_architecture.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/query.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/query.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | ||||||
| 
 | 
 | ||||||
| class Query<Model extends ObjectModel> | class Query<Model extends ObjectModel> | ||||||
|     extends UseCase<List<QueryInterface>, List<Model?>> { |     extends AsyncUseCase<List<QueryInterface>, List<Model?>> { | ||||||
|   final CrudRepository<Model> _crudRepository; |   final CrudRepository<Model> _crudRepository; | ||||||
| 
 | 
 | ||||||
|   Query(this._crudRepository); |   Query(this._crudRepository); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<List<Model?>> call(List<QueryInterface> params) => |   FutureOr<void> onStart(List<QueryInterface>? params) { | ||||||
|       _crudRepository.query(params); |     if(params == null){ | ||||||
|  |       throw ClientException('List of conditions cannot be null.'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<List<Model?>> call(List<QueryInterface>? params) => | ||||||
|  |       _crudRepository.query(params!); | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,11 +14,7 @@ | |||||||
| // You should have received a copy of the GNU General Public License | // You should have received a copy of the GNU General Public License | ||||||
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | // along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| // TODO(hpcl): add streamed usecase in wyatt_architecture |  | ||||||
| 
 | 
 | ||||||
| // import 'package:wyatt_architecture/wyatt_architecture.dart'; |  | ||||||
| // import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; |  | ||||||
| // import 'package:wyatt_crud_bloc/src/domain/usecases/params/stream_parameters.dart'; |  | ||||||
| 
 | 
 | ||||||
| // class Stream<Model extends ObjectModel> extends UseCase<StreamParameters, List<Model?>> { | // class Stream<Model extends ObjectModel> extends UseCase<StreamParameters, List<Model?>> { | ||||||
| //   final CrudRepository<Model> _crudRepository; | //   final CrudRepository<Model> _crudRepository; | ||||||
| @ -29,3 +25,20 @@ | |||||||
| //   StreamResult<List<Model?>> call(StreamParameters params) => | //   StreamResult<List<Model?>> call(StreamParameters params) => | ||||||
| //       _crudRepository.stream(id: params.id, conditions: params.conditions); | //       _crudRepository.stream(id: params.id, conditions: params.conditions); | ||||||
| // } | // } | ||||||
|  | 
 | ||||||
|  | // class StreamQuery<Model extends ObjectModel> | ||||||
|  | //     extends StreamUseCase<StreamParameters, List<Model?>> { | ||||||
|  | //   final CrudRepository<Model> _crudRepository; | ||||||
|  | 
 | ||||||
|  | //   StreamQuery(this._crudRepository); | ||||||
|  | 
 | ||||||
|  | //   @override | ||||||
|  | //   FutureOr<void> onStart(StreamParameters? params) { | ||||||
|  | //     if(params == null){ | ||||||
|  | //       throw ClientException('Stream parameters cannot be null.'); | ||||||
|  | //     } | ||||||
|  | //   } | ||||||
|  |    | ||||||
|  | //   @override | ||||||
|  | //   FutureOrResult<Stream<List<Model?>>> call(StreamParameters? params) => _crudRepository.stream(); | ||||||
|  | // } | ||||||
| @ -14,21 +14,30 @@ | |||||||
| // You should have received a copy of the GNU General Public License | // You should have received a copy of the GNU General Public License | ||||||
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | // along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
|  | import 'dart:async'; | ||||||
|  | 
 | ||||||
| import 'package:wyatt_architecture/wyatt_architecture.dart'; | import 'package:wyatt_architecture/wyatt_architecture.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/usecases/params/update_parameters.dart'; | import 'package:wyatt_crud_bloc/src/domain/usecases/params/update_parameters.dart'; | ||||||
| 
 | 
 | ||||||
| class Update<Model extends ObjectModel> | class Update<Model extends ObjectModel> | ||||||
|     extends UseCase<UpdateParameters<Model>, void> { |     extends AsyncUseCase<UpdateParameters<Model>, void> { | ||||||
|   final CrudRepository<Model> _crudRepository; |   final CrudRepository<Model> _crudRepository; | ||||||
| 
 | 
 | ||||||
|   Update(this._crudRepository); |   Update(this._crudRepository); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> call(UpdateParameters<Model> params) => |   FutureOr<void> onStart(UpdateParameters<Model>? params) { | ||||||
|  |     if(params == null){ | ||||||
|  |       throw ClientException('Update parameters cannot be null.'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<void> call(UpdateParameters<Model>? params) => | ||||||
|       _crudRepository.update( |       _crudRepository.update( | ||||||
|         params.id, |         params!.id, | ||||||
|         object: params.object, |         object: params.object, | ||||||
|         raw: params.raw, |         raw: params.raw, | ||||||
|       ); |       ); | ||||||
|  | |||||||
| @ -14,17 +14,26 @@ | |||||||
| // You should have received a copy of the GNU General Public License | // You should have received a copy of the GNU General Public License | ||||||
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | // along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
|  | import 'dart:async'; | ||||||
|  | 
 | ||||||
| import 'package:wyatt_architecture/wyatt_architecture.dart'; | import 'package:wyatt_architecture/wyatt_architecture.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart'; | ||||||
| import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart'; | ||||||
| 
 | 
 | ||||||
| class UpdateAll<Model extends ObjectModel> | class UpdateAll<Model extends ObjectModel> | ||||||
|     extends UseCase<Map<String, Object?>, void> { |     extends AsyncUseCase<Map<String, Object?>, void> { | ||||||
|   final CrudRepository<Model> _crudRepository; |   final CrudRepository<Model> _crudRepository; | ||||||
| 
 | 
 | ||||||
|   UpdateAll(this._crudRepository); |   UpdateAll(this._crudRepository); | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   FutureResult<void> call(Map<String, Object?> params) => |   FutureOr<void> onStart(Map<String, Object?>? params) { | ||||||
|       _crudRepository.updateAll(params); |     if(params == null){ | ||||||
|  |       throw ClientException('Data cannot be null.'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   FutureOrResult<void> call(Map<String, Object?>? params) => | ||||||
|  |       _crudRepository.updateAll(params!); | ||||||
| } | } | ||||||
|  | |||||||
| @ -21,6 +21,6 @@ export 'get.dart'; | |||||||
| export 'get_all.dart'; | export 'get_all.dart'; | ||||||
| export 'params/params.dart'; | export 'params/params.dart'; | ||||||
| export 'query.dart'; | export 'query.dart'; | ||||||
| export 'stream.dart'; | export 'stream_query.dart'; | ||||||
| export 'update.dart'; | export 'update.dart'; | ||||||
| export 'update_all.dart'; | export 'update_all.dart'; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user