process method
Implementation
@override
QueryMethod process() {
final name = _methodElement.displayName;
final parameters = _methodElement.formalParameters;
final rawReturnType = _methodElement.returnType;
final query = QueryProcessor(_methodElement, _getQuery()).process();
final returnsStream = rawReturnType.isStream;
_assertReturnsFutureOrStream(rawReturnType, returnsStream);
final returnsList = _getReturnsList(rawReturnType, returnsStream);
final flattenedReturnType = _getFlattenedReturnType(
rawReturnType,
returnsStream,
returnsList,
);
_assertReturnsNullableSingle(
returnsStream,
returnsList,
flattenedReturnType,
);
final queryable = _queryables.firstWhereOrNull((queryable) =>
queryable.classElement.displayName ==
flattenedReturnType.getDisplayStringCompat(withNullability: false));
final parameterTypeConverters = parameters
.expand((parameter) =>
parameter.getTypeConverters(TypeConverterScope.daoMethodParameter))
.toSet();
final allTypeConverters = _typeConverters +
_methodElement.getTypeConverters(TypeConverterScope.daoMethod) +
parameterTypeConverters;
if (queryable != null) {
final fieldTypeConverters =
queryable.fields.mapNotNull((field) => field.typeConverter);
allTypeConverters.addAll(fieldTypeConverters);
}
return QueryMethod(
_methodElement,
name,
query,
rawReturnType,
flattenedReturnType,
parameters,
queryable,
allTypeConverters,
);
}