From cbe4766ac6ffbfbcefbd48245426bbc1a22e6b49 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Mon, 4 Dec 2023 15:09:31 +0000 Subject: [PATCH] Update file README.md --- architecture/golang/README.md | 43 +++++++++++++++++------------------ 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/architecture/golang/README.md b/architecture/golang/README.md index 01f3e33..1ff4946 100644 --- a/architecture/golang/README.md +++ b/architecture/golang/README.md @@ -8,30 +8,29 @@ ├── docs - Директория с документацией ├── internal - Директория с внутренним кодом приложения ├── migrations - Директория с миграциями изменений БД -├── pkg - Директория с общими пакетами приложения +├── pkg - Директория с общими пакетами приложения - пакеты общие между доменами выносим в common, общее в рамках домена - в pkg ├── proto - Директория с описанием прототипа интерфейса gRPC ├── tests - Директория с тестами проекта (integration/e2e) ├── .dockerignore - Файл для перечисления игнорирования докером файлов/директорий ├── .gitignore - Файл для перечисления игнорирования гитом файлов/директорий ├── .gitlab-ci.yml - Файл настройки Gitlab CI -├── .golangci.yaml - Файл настройки линтера для Golang -├── .mockery.yaml - Файл настройки пакета mockery для генерации моков на Golang +├── .golangci.yaml - Файл настройки линтера для Golang -- убрать, вынести в общий репозиторий, в хуки +├── .mockery.yaml - Файл настройки пакета mockery для генерации моков на Golang -- либо заменяем мокери, либо мок имиспользуем для внешних зависимостей или пустых сервисов ├── .buf.gen.yaml - https://buf.build/docs/configuration/v1/buf-gen-yaml ├── .buf.work.yaml - https://buf.build/docs/configuration/v1/buf-work-yaml/ -├── .buf.yaml - https://buf.build/docs/configuration/v1/buf-yaml/ -├── Dockerfile - Файл контейнеризации сервиса +├── .buf.yaml - https://buf.build/docs/configuration/v1/buf-yaml/ -- proto2swagger не используем ├── go.mod - Корень управления зависимостями в GoLang ├── go.sum - Файл содержащий хеши для нескольких версий модуля -├── Makefile - Набор команд -├── openapi.yaml - Файл описания REST документации в формате OpenAPI (swagger) +├── Makefile - Набор команд -- заменить на go-task ├── README.md - Общий файл документации (путеводитель) ``` ## Структура `/cmd`: ``` -├── [app name] - Название приложения (app) +├── [app name] - Название приложения (app) -- уходим от пракки некольких сервисов в одном репозитории, поэтому подкаталог делать не надо │ ├── main.go - Точка входа в приложение +│ ├── Dockerfile - Файл контейнеризации сервиса -- проверить возможность скопировать из корня проекта ``` ## Структура `/docs`: @@ -39,6 +38,7 @@ ``` ├── [group] - Группа документации │ ├── README.md - Файл документации +├── openapi.yaml - Файл описания REST документации в формате OpenAPI (swagger) ``` ## Структура `/internal`: @@ -48,27 +48,25 @@ ``` ├── app - Пакет приложения │ ├── [app name].go - Приложение -├── dto - Data Transfer Object -│ ├── [group] - Группа DTO объектов -│ │ ├── [name].go - Название файла, содержащий структуры для DTO объектов -├── errors - Пакет для обработки и создания ошибок приложения (желательно вынести в pkg) +├── errors - Пакет для обработки и создания ошибок приложения (желательно вынести в pkg) -- 2 common, вынести как категоризатор ошибок и действий о них ├── initialize - Пакет для инициализации модулей (контроллеров, репозиториев, клиентов) -├── interface - Данная директория хранит адаптеры для взаимодействия с внешними сервисами +├── adapters - Данная директория хранит адаптеры для взаимодействия с внешними сервисами │ ├── client - Пакет клиента для взаимодействия с другими приложениями (REST, gRPC) │ │ ├── [name].go - Сам клиент -│ ├── controller - Директория контроллеров -│ │ ├── [name] - Директория контроллера -│ │ │ ├── mocks - Директория, которая хранит сгенерированные моки для контроллера -│ │ │ ├── [name].go - Сам контроллер. Хранит в себе обработчики внешних запросов -│ │ │ ├── [name]_test.go - Файл тестов для контроллера -│ ├── repository - Директория репозиториев для взаимодействия с базой данных -│ │ ├── [name].go - Файл репозитория (user.go) +├── repository - Директория репозиториев для взаимодействия с базой данных -- если есть набор отдельных баз, то делаем отдельные подкаталоги +│ ├── [name].go - Файл репозитория (user.go) +├── controller - Директория контроллеров +│ ├── [name] - Директория контроллера +│ │ ├── mocks - Директория, которая хранит сгенерированные моки для контроллера +│ │ ├── [name].go - Сам контроллер. Хранит в себе обработчики внешних запросов +│ │ ├── [name]_test.go - Файл тестов для контроллера ├── models - Пакет моделей данных │ ├── [name].go - Файл структур, которые относятся к определённой модели (user.go) ├── proto - Директория, содержащая сгенерированные proto файлы -├── server - Пакет хранящий инициализации серверов (http/tcp/grpc) +├── server - Пакет хранящий инициализации серверов (http/tcp/grpc) -- 2 common │ ├── [name].go - Файл инициализации сервера (http/tcp/grpc) -├── utils - Пакет внутренних функций/утилит приложения +├── services - Пакет слоя бизнес логики +├── utils - Пакет внутренних функций/утилит приложения - не больше одного уровня вложенности │ ├── [name].go - Утилита │ ├── [name]_test.go - Тесты утилиты ├── worker - Пакет, для запуска и инициализации воркеров @@ -78,6 +76,7 @@ │ │ ├── [name]_test.go - Файл тестов воркера │ ├── run.go - Файл запуска воркеров ``` +config? app ## Структура `/pkg`: