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;
|
||||
|
||||
@override
|
||||
FutureResult<void> create(Model object, {String? id}) =>
|
||||
FutureOrResult<void> create(Model object, {String? id}) =>
|
||||
Result.tryCatchAsync<void, AppException, AppException>(
|
||||
() async {
|
||||
await _crudDataSource.create(object, id: id);
|
||||
@ -39,21 +39,21 @@ class CrudRepositoryImpl<Model extends ObjectModel>
|
||||
);
|
||||
|
||||
@override
|
||||
FutureResult<Model?> get(String id) =>
|
||||
FutureOrResult<Model?> get(String id) =>
|
||||
Result.tryCatchAsync<Model?, AppException, AppException>(
|
||||
() async => _crudDataSource.get(id),
|
||||
(error) => error,
|
||||
);
|
||||
|
||||
@override
|
||||
FutureResult<List<Model?>> getAll() =>
|
||||
FutureOrResult<List<Model?>> getAll() =>
|
||||
Result.tryCatchAsync<List<Model?>, AppException, AppException>(
|
||||
() async => _crudDataSource.getAll(),
|
||||
(error) => error,
|
||||
);
|
||||
|
||||
@override
|
||||
FutureResult<void> update(
|
||||
FutureOrResult<void> update(
|
||||
String id, {
|
||||
Model? object,
|
||||
Map<String, dynamic>? raw,
|
||||
@ -64,28 +64,28 @@ class CrudRepositoryImpl<Model extends ObjectModel>
|
||||
);
|
||||
|
||||
@override
|
||||
FutureResult<void> updateAll(Map<String, Object?> raw) =>
|
||||
FutureOrResult<void> updateAll(Map<String, Object?> raw) =>
|
||||
Result.tryCatchAsync<void, AppException, AppException>(
|
||||
() async => _crudDataSource.updateAll(raw),
|
||||
(error) => error,
|
||||
);
|
||||
|
||||
@override
|
||||
FutureResult<void> delete(String id) =>
|
||||
FutureOrResult<void> delete(String id) =>
|
||||
Result.tryCatchAsync<void, AppException, AppException>(
|
||||
() async => _crudDataSource.delete(id),
|
||||
(error) => error,
|
||||
);
|
||||
|
||||
@override
|
||||
FutureResult<void> deleteAll() =>
|
||||
FutureOrResult<void> deleteAll() =>
|
||||
Result.tryCatchAsync<void, AppException, AppException>(
|
||||
() async => _crudDataSource.deleteAll(),
|
||||
(error) => error,
|
||||
);
|
||||
|
||||
@override
|
||||
FutureResult<List<Model?>> query(List<QueryInterface> conditions) =>
|
||||
FutureOrResult<List<Model?>> query(List<QueryInterface> conditions) =>
|
||||
Result.tryCatchAsync<List<Model?>, AppException, AppException>(
|
||||
() async => _crudDataSource.query(conditions),
|
||||
(error) => error,
|
||||
|
@ -20,18 +20,18 @@ import 'package:wyatt_crud_bloc/src/domain/entities/query.dart';
|
||||
|
||||
abstract class CrudRepository<Model extends ObjectModel>
|
||||
extends BaseRepository {
|
||||
FutureResult<void> create(Model object, {String? id});
|
||||
FutureResult<Model?> get(String id);
|
||||
FutureResult<List<Model?>> getAll();
|
||||
FutureResult<void> update(
|
||||
FutureOrResult<void> create(Model object, {String? id});
|
||||
FutureOrResult<Model?> get(String id);
|
||||
FutureOrResult<List<Model?>> getAll();
|
||||
FutureOrResult<void> update(
|
||||
String id, {
|
||||
Model? object,
|
||||
Map<String, dynamic>? raw,
|
||||
});
|
||||
FutureResult<void> updateAll(Map<String, Object?> raw);
|
||||
FutureResult<void> delete(String id);
|
||||
FutureResult<void> deleteAll();
|
||||
FutureResult<List<Model?>> query(List<QueryInterface> conditions);
|
||||
FutureOrResult<void> updateAll(Map<String, Object?> raw);
|
||||
FutureOrResult<void> delete(String id);
|
||||
FutureOrResult<void> deleteAll();
|
||||
FutureOrResult<List<Model?>> query(List<QueryInterface> conditions);
|
||||
StreamResult<List<Model?>> stream({
|
||||
String? id,
|
||||
List<QueryInterface>? conditions,
|
||||
|
@ -15,15 +15,24 @@
|
||||
// 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:wyatt_architecture/wyatt_architecture.dart';
|
||||
import 'package:wyatt_crud_bloc/src/domain/entities/object_model.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;
|
||||
|
||||
Create(this._crudRepository);
|
||||
|
||||
@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
|
||||
// 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_crud_bloc/src/domain/entities/object_model.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;
|
||||
|
||||
Delete(this._crudRepository);
|
||||
|
||||
@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/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;
|
||||
|
||||
DeleteAll(this._crudRepository);
|
||||
|
||||
@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
|
||||
// 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_crud_bloc/src/domain/entities/object_model.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;
|
||||
|
||||
Get(this._crudRepository);
|
||||
|
||||
@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/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;
|
||||
|
||||
GetAll(this._crudRepository);
|
||||
|
||||
@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
|
||||
// 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_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/repositories/crud_repository.dart';
|
||||
|
||||
class Query<Model extends ObjectModel>
|
||||
extends UseCase<List<QueryInterface>, List<Model?>> {
|
||||
extends AsyncUseCase<List<QueryInterface>, List<Model?>> {
|
||||
final CrudRepository<Model> _crudRepository;
|
||||
|
||||
Query(this._crudRepository);
|
||||
|
||||
@override
|
||||
FutureResult<List<Model?>> call(List<QueryInterface> params) =>
|
||||
_crudRepository.query(params);
|
||||
FutureOr<void> onStart(List<QueryInterface>? 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
|
||||
// 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?>> {
|
||||
// final CrudRepository<Model> _crudRepository;
|
||||
@ -29,3 +25,20 @@
|
||||
// StreamResult<List<Model?>> call(StreamParameters params) =>
|
||||
// _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
|
||||
// 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_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/usecases/params/update_parameters.dart';
|
||||
|
||||
class Update<Model extends ObjectModel>
|
||||
extends UseCase<UpdateParameters<Model>, void> {
|
||||
extends AsyncUseCase<UpdateParameters<Model>, void> {
|
||||
final CrudRepository<Model> _crudRepository;
|
||||
|
||||
Update(this._crudRepository);
|
||||
|
||||
@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(
|
||||
params.id,
|
||||
params!.id,
|
||||
object: params.object,
|
||||
raw: params.raw,
|
||||
);
|
||||
|
@ -14,17 +14,26 @@
|
||||
// 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:wyatt_architecture/wyatt_architecture.dart';
|
||||
import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart';
|
||||
import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
||||
|
||||
class UpdateAll<Model extends ObjectModel>
|
||||
extends UseCase<Map<String, Object?>, void> {
|
||||
extends AsyncUseCase<Map<String, Object?>, void> {
|
||||
final CrudRepository<Model> _crudRepository;
|
||||
|
||||
UpdateAll(this._crudRepository);
|
||||
|
||||
@override
|
||||
FutureResult<void> call(Map<String, Object?> params) =>
|
||||
_crudRepository.updateAll(params);
|
||||
FutureOr<void> onStart(Map<String, Object?>? 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 'params/params.dart';
|
||||
export 'query.dart';
|
||||
export 'stream.dart';
|
||||
export 'stream_query.dart';
|
||||
export 'update.dart';
|
||||
export 'update_all.dart';
|
||||
|
Loading…
x
Reference in New Issue
Block a user