Для работы любого сервиса обычно нужна база данных. Чаще всего PostgreSQL.
Также требуются общие функции по работе с БД, так называемые CRUD операции,
операции CREATE + READ + UPDATE + DELETE, а также другие функции по работе с БД.
Без создания общих функций получится полный хаос в работе,
каждый программист будет делать по-своему, получится много ошибок и др.
Для создания функций CRUD требуется написать много однотипного кода,
достаточно трудоёмкая работа, и при этом очень важная,
как в доме самое важное - это фундамент,
так и в любом сервисе самое важное - это CRUD-операции.
Есть специализированные ORM для облегчения работы программиста,
такие как gorm, тем не менее, всё равно, надо писать функции CRUD самому.
(используется компонента pgx pool, т.к. без gorm работает в два раза быстрее)
Также нужен код для подключения к БД, отключения, graceful shutdown,
балансировщик нагрузки, загрузка параметров из переменных окружения и др.
Для автоматического написания такого кода, я сделал готовый кодогенератор: crud_generator,
который напишет полностью готовый микросервис, с CRUD операциями для всех таблиц,
которые можно использовать напрямую или по сети через протокол GRPC.
Список всех таблиц и колонок берётся напрямую из БД.
Заполнить надо только параметры подключения к БД в файле с настройками,
можно заполнить фильтр какие таблицы брать, какие исключать,
есть ещё много настроек, но все можно не изменять.
Получится готовый микросервис, который можно сразу запустить,
или можно использовать как библиотеку через import.
Для каждой таблицы в базе данных Postgres SQL автоматически будут сделаны функции для выполнения crud операций:
Create()
Read()
Update()
Delete() (или Delete() + Restore() если есть поле is_deleted)
Save() - создание новой записи при пустом ID, или обновление записи при не пустом ID
ReadFromCache() - чтение из кэша или базы данных
Update_ColumnName() - изменение только одной колонки с именем ColumnName, отдельная функция для каждой колонки каждой таблицы.
-
UpdateManyFields() - изменение нескольких колонок, перечисленных в массиве
Также можно автоматически создать функции:
FindBy_ColumnName() - поиск записи по одной или нескольким колонкам
FindMassBy_ColumnName() - поиск несколько записей по одной или нескольким колонкам
ReadAll() - возврат всех записей таблицы, кроме помеченных на удаление is_deleted=true
Схема как это работает:

Кодогенератор универсальный, будет работать в любой базе,
сейчас работает у нас на prod, сгенерировано 700 тысяч строк кода автоматически.
Надеюсь ещё кому-нибудь пригодится :-)
Комментарии (4)
anaxita
25.08.2025 16:11А как понять что это «у вас в проде» работает?
Выглядит так что вы либо джун либо с другого языка перешли, но судя по переменным «otvet := …” и прочему неймингу - скорее сразу оба варианта и вам по какой то причине в маленькой конторе дали карт-бланш на технические решения, а значит лида нет либо он на другом языке и забил на проект.
напишите название компании плз чтобы сразу понимать)
des1roer
Если id не serial а uuid будет работать?