search method
FutureOr<List<ServiceDefinitionModel> >
search(
- ServiceDefinitionSearchModel query, {
- bool createOpLog = false,
override
The search
method searches for entities that match the given query.
Implementation
@override
FutureOr<List<ServiceDefinitionModel>> search(
ServiceDefinitionSearchModel query, {
bool createOpLog = false,
}) async {
return retryLocalCallOperation(() async {
final selectQuery = sql.select(sql.serviceDefinition).join([]);
final results = await (selectQuery
..where(buildAnd([
if (query.id != null)
sql.serviceDefinition.id.equals(
query.id!,
),
// To fetch service definition of a single checklist with the code
if (query.code != null)
sql.serviceDefinition.code.isIn(
query.code!,
),
])))
.get();
final List<ServiceDefinitionModel> serviceDefinitionList = [];
for (final e in results) {
final data = e.readTable(sql.serviceDefinition);
final selectattributeQuery = sql.select(sql.attributes).join([]);
final val = await (selectattributeQuery
..where(buildAnd([
sql.attributes.referenceId.equals(
data.id!,
),
])))
.get();
final res = val.map((e) {
final resull = e.readTableOrNull(sql.attributes);
if (resull != null) {
List<String> list = resull.values != null
? resull.values!
.replaceFirst('[', '')
.replaceFirst(']', '')
.replaceAll(" ", '')
.split(',')
: [];
if (list.isEmpty) list.removeRange(0, list.length);
return AttributesModel(
id: resull.id,
code: resull.code,
dataType: resull.dataType,
referenceId: resull.referenceId,
tenantId: resull.tenantId,
values: resull.values?.isNotEmpty == true ? list : null,
isActive: resull.isActive,
required: resull.required,
regex: resull.regex,
order: resull.order,
isDeleted: resull.isDeleted,
rowVersion: resull.rowVersion,
);
}
}).toList();
serviceDefinitionList.add(ServiceDefinitionModel(
id: data.id,
tenantId: data.tenantId,
rowVersion: data.rowVersion,
code: data.code,
isActive: data.isActive,
isDeleted: data.isDeleted,
attributes: res.whereNotNull().toList(),
));
}
return serviceDefinitionList;
});
}