TGViewer
ИндиПетр ИндиПетр @startupetr · 68 subscribers
Post #102 121
SQLc

За время, пока я пилю свои индистартапчики, я взял на вооружение много очень полезных инструментов, которые вошли в мой стэк и существенно его усилили. Я думаю, что грех не поделиться своими открытиями. Сегодня речь пойдёт про sqlc, как вы могли догадаться.

Есть такой слой кода, который всегда был для меня очень нудным — это написание SQL-запросов средствами языка программирования. Для решения этой задачи существует несколько подходов. Самый модный и популярный, как мне кажется, — это ORM. Ты описываешь классы, которые олицетворяют твои модели в базе, прописываешь их отношения. После этого волшебная библиотека навешивает на них всякие методы, которые позволяют тебе всё это дело из базы доставать и в базу записывать. Вроде всё работает, но меня лично в этом всём всегда смущало отсутствие понимания того, что там происходит под капотом. Я тревожный человек, я хочу всё контролировать! Ещё если у тебя появляется потребность в нестандартном запросе, начинается гимнастика с элементами акробатики в попытках на базе этой ORM нужный запрос соорудить. Короче, мне это всё не очень зашло.

В какой-то момент я пришёл к тому, что просто писал весь код, который составляет и шлёт запросы, руками. Это очень много однообразного кода, где легко допустить ошибку, но сам подход меня полностью устраивал. Так я и жил, пока в один момент не нашёл то, о чём всегда мечтал.

SQLc — это кодогенератор для Go, который на вход принимает набор SQL-запросов и набор миграций, а на выходе даёт простые как пробка функции и модели, чтобы с лёгкостью щеголять ими в своей бизнес-логике. Модели он генерит из миграций, а функции — из запросов. У него херова туча настроек, так что его почти все смогут накрутить так, как им нравится. После того как он всё нагенерит, ты можешь пойти и посмотреть, что у него там получилось — это лично у меня улучшает качество сна.

В принципе, я вообще обожаю кодогенерацию. Она драматически снижает вероятность ошибок в коде и ускоряет разработку. А это всё — ценнейшие метрики для маленьких инди-проектов и MVP.

Рекомендую видео-обзор этого чудесного инструмента, если вам стало интересно.

P.S. Касательно других языков, я не знаю точных аналогов, но думаю, вы сможете найти что-то похожее. Самое главное — это сама концепция: фокусироваться только на SQL, а код для бизнес-логики нагенерится автоматически.
  • 👍 3
  • ❤ 1
More from @startupetr
  1. Sep 18, 2025Иногда ошибки в js приводят к забавным результатам. https://redocly.com/
  2. Aug 22, 2025Secret management Часть жизни бэкенд-разработчика — это работа с секретами. Ключи к сторон…
  3. Aug 17, 2025Когда я работал в Ozon, меня там научили, что в каждом уважающем себя проекте должно быть…
  4. Aug 8, 2025Распорядок дня Вот уже два месяца прошло с тех пор, как я перебрался в Питерочек. За это в…
  5. Aug 1, 2025Чужие мысли Я хотел поделиться с вами одним наблюдением и поразмышлять. Я заметил, что люд…
  6. Jul 22, 2025Водичка Последние две недели я пил только воду. Ни чая, ни кофе, ни лимонадов — одна вода…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →