buildFilterSql function

Sql? buildFilterSql(
  1. Filter filter,
  2. Iterable<(PostgresqlDataAttribute, PostgresqlRelation)> attributes
)

Implementation

Sql? buildFilterSql(
  Filter filter,
  Iterable<(PostgresqlDataAttribute, PostgresqlRelation)> attributes,
) {
  return switch (filter) {
    EmptyFilter() => null,
    FilterGroup() => Sql.joinWrap(
      filter.filters
          .map((e) => buildFilterSql(e, attributes))
          .nonNulls
          .separatedBy(filter.isConjunction ? Sql.and : Sql.or),
    ),
    CompareFilter(:final left, :final type, :final right) => _compareSql(
      attributes,
      left,
      type,
      right,
    ),
  };
}