encode method

FutureOr<EncodingContext> encode(
  1. Condition condition,
  2. String entityName, {
  3. Object? parameters,
  4. List? positionalParameters,
  5. Map<String, Object?>? namedParameters,
  6. Transaction? transaction,
  7. String? tableName,
})

Implementation

FutureOr<EncodingContext> encode(Condition condition, String entityName,
    {Object? parameters,
    List? positionalParameters,
    Map<String, Object?>? namedParameters,
    Transaction? transaction,
    String? tableName}) {
  var context = EncodingContext(entityName,
      parameters: parameters,
      positionalParameters: positionalParameters,
      namedParameters: namedParameters,
      transaction: transaction,
      tableName: tableName);

  if (condition is ConditionANY) {
    return context;
  }

  bool rootIsGroup;

  if (condition is GroupCondition) {
    rootIsGroup = true;

    if (condition.conditions.isEmpty) {
      return context;
    } else if (condition.conditions.length == 1 &&
        condition.conditions.first is ConditionANY) {
      return context;
    }
  } else {
    rootIsGroup = false;
    context.write(groupOpener);
  }

  var ret = encodeCondition(condition, context);

  return ret.resolveMapped((s) {
    if (!rootIsGroup) {
      s.write(groupCloser);
    }

    return context;
  });
}