intermediate
SQL-like query builder
Стройте typed SQL expressions, сохраняя joins, filters, selected columns и generated SQL easy to inspect.
Drizzle держит запросы близко к SQL с TypeScript-выводом для столбцов и join. Динамические фильтры композируются, а SQL остаётся просматриваемым.
await db
.select({ id: orders.id, total: orders.total })
.from(orders)
.innerJoin(customers, eq(customers.id, orders.customerId))
.where(and(eq(orders.status, 'open'), gte(orders.total, minTotal)));
На интервью: выбранные столбцы, join, динамические `where`, prepared statements, инспекция SQL и знание СУБД.
Типовые ошибки: SQL-like API не спасает от плохих планов; типы защищают форму, но не путь доступа.
Компромисс — прозрачность SQL и type safety против удобства «чистого» ORM.
Чеклист:
- Держите SQL читаемым.
- Смотрите планы важных запросов.
- Типы для формы результата.
- Параметризуйте пользовательский ввод.