https://github.com/rtuty/library-grpc-server
gRPC server for library
https://github.com/rtuty/library-grpc-server
backend docker go grpc protocol-buffers
Last synced: 2 months ago
JSON representation
gRPC server for library
- Host: GitHub
- URL: https://github.com/rtuty/library-grpc-server
- Owner: Rtuty
- Created: 2023-06-29T11:54:00.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-07-11T11:59:04.000Z (almost 3 years ago)
- Last Synced: 2025-10-06T15:41:55.539Z (9 months ago)
- Topics: backend, docker, go, grpc, protocol-buffers
- Language: Go
- Homepage:
- Size: 32.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#### Запуск проекта:
```
make docker
```
#### Описание архитектуры сервиса
**internal** - содержит всю внутреннюю логику приложения.
Сервис библиотека создается согласно принципу двухуровневой архитектуры (уровень базы данных и транспортный).
**internal/app** - инстанс сервиса, строится логика и формируется run-метод, вызываемый из cmd/main.
#### Уровень базы данных
**internal/db** - взаимодествия с базой данных MySQL
**internal/db/(authors||books)** - манипуляции с сущностями книга и автор в плоскости БД.
**internal/db/transaction** - чтобы соблюдать принципы атомарности, согласованности и изолированности при работе с MySql, сервис обработывает sql-запросы в рамках транзакции.
Методы query, query row и execute вынесены в данный файл, чтобы следовать принципу разработки DRY, при написании логики в файле манипуляции сущностями. Также, считаю важным уточнить,
что в работе с исполняемыми запросами используются параметризованные аргументы, чтобы недопустить возможность sql-инъекции со стороны клиента.
#### Транспортный уровень