search method
Method to check data by query with optional data source builder.
Example:
Checker checker = Checker(field: 'status', value: 'active');
repository.search(
checker,
params: Params({"field1": "value1", "field2": "value2"}),
);
Implementation
Future<Response<T>> search(
Checker checker, {
DataFieldParams? params,
bool? countable,
bool resolveRefs = false,
bool resolveDocChangesRefs = false,
Ignore? ignore,
bool? createRefs,
bool merge = true,
bool? lazyMode,
bool? backupMode,
}) {
return _modifier(DataModifiers.search, () async {
final feedback = await _execute((source) {
return source.search(
checker,
params: params,
countable: countable,
resolveRefs: resolveRefs,
resolveDocChangesRefs: resolveDocChangesRefs,
ignore: ignore,
);
});
if (feedback.isValid || !isBackupMode(backupMode)) return feedback;
final backup = await _backup((source) {
return source.search(
checker,
params: params,
countable: countable,
resolveRefs: resolveRefs,
resolveDocChangesRefs: resolveDocChangesRefs,
ignore: ignore,
);
});
if (backup.isValid) {
if (isLazyMode(lazyMode)) {
_execute((source) {
return source.creates(
backup.result.map((e) => DataWriter(id: e.id, data: e.filtered)),
params: params,
createRefs: createRefs ?? resolveRefs,
merge: merge,
);
});
} else {
await _execute((source) {
return source.creates(
backup.result.map((e) => DataWriter(id: e.id, data: e.filtered)),
params: params,
createRefs: createRefs ?? resolveRefs,
merge: merge,
);
});
}
}
return backup;
});
}