Об этом проекте

Bun — современная Golang ORM, созданная для разработчиков, которые предпочитают писать SQL напрямую, но хотят пользоваться преимуществами типобезопасности, структурированного построения запросов и переносимости между базами данных. В отличие от ORM, абстрагирующих SQL, Bun принимает его как основу, позволяя строить сложные и читаемые запросы с помощью Go-методов при полном контроле над генерируемым SQL. Он поддерживает несколько СУБД, включая PostgreSQL, MySQL/MariaDB, SQLite, Microsoft SQL Server и Oracle, каждая с собственным драйвером и диалектом. Результаты запросов можно считывать в структуры, мапы, срезы или скалярные значения, что обеспечивает гибкость при работе с данными. Связи между таблицами определяются через структурные теги, позволяя выполнять жадную загрузку связанных моделей, таких как has-many и belongs-to. Bun включает production-ready возможности: миграции (с версионированием изменений схемы), массовые операции (вставка/обновление/удаление), мягкое удаление и интеграцию с OpenTelemetry для наблюдаемости. Отладка поддерживается благодаря подробному логированию запросов, а производительность оптимизирована за счёт работы поверх стандартного пакета `database/sql` Go с минимальными накладными расходами. Библиотека предоставляет обширную документацию, примеры и стартовый набор для production-использования. Она также интегрируется с Uptrace, open-source APM-инструментом, для распределённого трассирования и мониторинга. Поддержка сообщества доступна через Discord и обсуждения на GitHub. Идеально подходит для команд, ищущих баланс между выразительностью SQL и удобством ORM, Bun избегает магических абстракций, предлагая мощные и поддерживаемые слои доступа к данным в Go-приложениях.