/**
  * @param FilterInterface $filter
  */
 protected function compileFilterConditions(FilterInterface $filter)
 {
     $conjunction = '';
     foreach ($filter->getConditions() as $condition) {
         if ($this->isSkipProperty($condition->getPropertyName())) {
             continue;
         }
         if ($condition->isGroup()) {
             $this->compileGroup($condition, $conjunction);
             if (count($condition->getConditions())) {
                 $conjunction = ' AND ';
             }
         } else {
             $this->compileCondition($condition, $conjunction);
             $conjunction = ' AND ';
         }
     }
 }
 /**
  * @param FilterInterface $filter
  *
  * @return array
  *
  * @throws RuntimeException
  */
 protected function getFilterProperties(FilterInterface $filter)
 {
     if (count($filter->getConditions()) === 0) {
         return [];
     }
     throw new RuntimeException('please define filter properties');
 }