12. Типобезопасный билдер запросов

Сложно
builderfluentclass

Реализуйте fluent-паттерн Query Builder с цепочкой вызовов: select, where, orderBy, limit, execute.

Каждый способ должен быть реализован независимо в своём контейнере:

  1. select задаёт поля для выборки
  2. where добавляет условия фильтрации (можно несколько)
  3. orderBy задаёт сортировку
  4. limit задаёт ограничение
  5. build возвращает объект запроса
  6. Методы поддерживают цепочку вызовов

Реализуйте класс QueryBuilder для построения SQL-подобных запросов: - select(...fields) — задаёт поля для выборки - where(field, operator, value) — добавляет условие (поддержка нескольких) - orderBy(field, direction) — сортировка ('asc' | 'desc') - limit(n) — ограничение количества - build() — возвращает объект запроса Каждый метод (кроме build) возвращает this для цепочки вызовов. Пример: new QueryBuilder() .select('name', 'email') .where('age', '>', 18) .where('active', '=', true) .orderBy('name', 'asc') .limit(10) .build() Результат: { fields: ['name', 'email'], conditions: [ { field: 'age', operator: '>', value: 18 }, { field: 'active', operator: '=', value: true } ], order: { field: 'name', direction: 'asc' }, limit: 10 }

Примеры

Пример 15
Вход:
new QueryBuilder().select('name').where('age', '>', 18).limit(10).build()
Ожидаемый результат:

{ fields: ['name'], conditions: [{ field: 'age', operator: '>', value: 18 }], order: null, limit: 10 }

Подсказка:

Каждый метод добавляет свою часть запроса, build() собирает итоговый объект

Ограничения

  • Не использовать сторонние библиотеки
0% принято
0 решений