2023-11-14 16:07:41 +02:00
|
|
|
Приложение crud_generator предназначено для автоматической генерации файлов исходного кода
|
|
|
|
на языке golang для выполнения операций CRUD.
|
2023-11-22 16:19:22 +02:00
|
|
|
Создаётся полностью готовый микросервис, который можно сразу запустить.
|
2023-11-14 16:07:41 +02:00
|
|
|
|
2024-08-21 16:30:55 +02:00
|
|
|
Для каждой таблицы в базе данных Postgres SQL автоматически будут сделаны функции для выполнения crud операций:
|
|
|
|
- Create()
|
|
|
|
- Read()
|
|
|
|
- Update()
|
|
|
|
- Delete() (или Delete() + Restore() если есть поле is_deleted)
|
|
|
|
- Save() - создание новой записи при пустом ID, или обновление записи при не пустом ID
|
2024-03-15 15:30:07 +02:00
|
|
|
- ReadFromCache() - чтение из кэша или базы данных
|
|
|
|
- Update_ColumnName() - изменение только одной колонки с именем ColumnName,
|
|
|
|
отдельная функция для каждой колонки каждой таблицы.
|
2024-08-21 16:30:55 +02:00
|
|
|
- UpdateManyFields() - изменение нескольких колонок, перечисленных в массиве
|
|
|
|
- FindBy_ColumnName() - поиск записи по одной или нескольким колонкам (если заполнить файл findby_functions.json)
|
2024-09-11 14:11:22 +02:00
|
|
|
- FindMassBy_ColumnName() - поиск несколько записей по одной или нескольким колонкам (если заполнить файл findmassby_functions.json)
|
2024-09-18 13:25:47 +02:00
|
|
|
- ReadAll() - возврат всех записей таблицы, кроме помеченных на удаление is_deleted=true (если заполнить файл readall_functions.json)
|
2024-09-11 14:11:22 +02:00
|
|
|
|
2024-03-15 15:30:07 +02:00
|
|
|
|
2023-11-14 16:07:41 +02:00
|
|
|
генерируются файлы:
|
2024-08-21 16:30:55 +02:00
|
|
|
1. tables - структура struct со всеми полями из БД, и аннотациями gorm + json
|
|
|
|
Таблицы с полями в базе данных должны быть созданы заранее вручную.
|
|
|
|
Кодогенератор найдёт в базе все таблицы и их поля, и использует их.
|
|
|
|
|
|
|
|
2. entities - структура struct, включающая table, с функциями crud операций
|
|
|
|
|
|
|
|
3. crud - файлы выполнения crud операций, обмен с базой данных,
|
|
|
|
а также файлы с тестами
|
|
|
|
|
|
|
|
4. grpc server - файлы для выполнения crud операций по сети, по протоколу GRPC,
|
|
|
|
а также файлы с тестами
|
|
|
|
|
|
|
|
5. grpc client - файлы клиенты для использования GRPC сторонними сервисами,
|
|
|
|
а также файлы с тестами
|
|
|
|
|
|
|
|
6. nrpc server - файлы для выполнения crud операций по сети, по протоколу NRPC (через брокер сообщений NATS),
|
|
|
|
а также файлы с тестами
|
|
|
|
|
|
|
|
7. nrpc client - файлы клиенты для использования NRPC сторонними сервисами,
|
|
|
|
а также файлы с тестами
|
|
|
|
|
|
|
|
8. crud_starter - файл с функциями переключения на нужный протокол db или grpc или nrpc
|
|
|
|
|
|
|
|
9. main.go и другие .go файлы
|
|
|
|
|
|
|
|
10. Makefile - файл настройки запуска скриптов
|
|
|
|
|
|
|
|
11. .env - файл для заполнения конфигурации микросервиса (параметры подключения к БД и др.)
|
2023-11-14 16:07:41 +02:00
|
|
|
|
2023-11-14 17:03:01 +02:00
|
|
|
|
2023-11-14 16:07:41 +02:00
|
|
|
Шаблоны кода хранятся в папке bin/templates.
|
|
|
|
Шаблон кода - это файл .go скопированный из реального проекта -
|
|
|
|
поэтому шаблон сделать (поменять на свой) легко - просто скопировать свой файл.
|
|
|
|
Кодогенератор выполняет замену части кода в шаблоне на другой код:
|
|
|
|
- название таблицы БД
|
|
|
|
- название модели
|
|
|
|
- добавление и убирание импортов
|
|
|
|
|
|
|
|
Порядок установки:
|
|
|
|
1. Скомпилировать этот репозиторий
|
2024-03-15 15:30:07 +02:00
|
|
|
>make build
|
2023-11-14 16:07:41 +02:00
|
|
|
в папке bin появится файл crud_generator
|
|
|
|
|
2023-11-17 14:08:31 +02:00
|
|
|
2. Заполнить найстройки в файле bin/templates/configs_/settings.txt
|
2024-08-14 10:19:20 +02:00
|
|
|
(или .env)
|
2023-11-14 16:07:41 +02:00
|
|
|
- подключения к вашей базе данных
|
|
|
|
- имя вашего нового сервиса
|
|
|
|
- URL вашего нового сервиса
|
|
|
|
- и др.
|
|
|
|
|
2024-03-15 15:30:07 +02:00
|
|
|
3. Таблицы в базе данных должны быть сделаны заранее, вручную.
|
|
|
|
|
|
|
|
4. Запустить crud_generator
|
2023-11-14 16:07:41 +02:00
|
|
|
В папке bin появится новая папка с именем вашего сервиса,
|
|
|
|
с подпапками и готовыми файлами внутри.
|
|
|
|
|
2024-03-15 15:30:07 +02:00
|
|
|
5. Заполнить параметры конфигурации в файле .env
|
2023-11-22 16:19:22 +02:00
|
|
|
Запустить микросервис:
|
2024-03-15 15:30:07 +02:00
|
|
|
>make run
|
2023-11-22 16:19:22 +02:00
|
|
|
|
2024-10-24 14:45:53 +02:00
|
|
|
Особенности:
|
|
|
|
1. Игнорируются таблицы с префиксом в названии или комментарии = "DELETED" или "УДАЛИТЬ"
|
|
|
|
2. Игнорируются колонки с префиксом в названии или комментарии = "DELETED" или "УДАЛИТЬ"
|
2023-11-14 16:07:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
P.S.
|
2024-08-21 16:30:55 +02:00
|
|
|
Я сгенерировал себе 420000 строк кода, из 70 таблиц в базе данных, для своего сервиса.
|
2023-11-14 16:07:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
Исходный код на языке Golang.
|
|
|
|
Тестировал на Linux Ubuntu
|
|
|
|
Реадми от 14.11.2023
|
|
|
|
|
|
|
|
Сделал Александр Никитин
|
|
|
|
https://github.com/ManyakRus/crud_generator
|
|
|
|
|