https://github.com/sleleko/go-solid-app
Exmaple of SOLID on Golang
https://github.com/sleleko/go-solid-app
Last synced: 15 days ago
JSON representation
Exmaple of SOLID on Golang
- Host: GitHub
- URL: https://github.com/sleleko/go-solid-app
- Owner: sleleko
- Created: 2026-06-25T19:06:32.000Z (29 days ago)
- Default Branch: main
- Last Pushed: 2026-06-27T11:17:30.000Z (27 days ago)
- Last Synced: 2026-06-27T13:09:28.047Z (27 days ago)
- Language: Go
- Size: 7.81 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Go Order SOLID
Рефакторинг простого приложения заказов с применением SOLID.
## Что реализовано
- `OrderService` отвечает за бизнес-логику создания заказа.
- `SQLiteRepo` отвечает за работу с SQLite.
- `EmailSender` и `SMSSender` отвечают за отправку уведомлений.
- `OrderService` зависит от интерфейсов `RepositoryWriter` и `Notifier`, а не от конкретных реализаций.
- Интерфейсы для БД разделены:
- `RepositoryInitializer` — инициализация хранилища;
- `RepositoryWriter` — запись заказов.
- Добавлены тесты с моками без реальной базы данных.
## Структура проекта
```text
cmd/orders/main.go
internal/domain/order.go
internal/domain/message.go
internal/repository/interfaces.go
internal/repository/sqlite.go
internal/notifier/notifier.go
internal/notifier/email.go
internal/notifier/sms.go
internal/service/order_service.go
internal/service/order_service_test.go
```
## Запуск
```bash
go mod tidy
go run ./cmd/orders
```
Ожидаемый вывод:
```text
Email-уведомление отправлено клиенту Иван: Ваш заказ на сумму 10.50 создан и ожидает обработки
SMS-уведомление отправлено клиенту Мария: Ваш заказ на сумму 22.30 создан и ожидает обработки
```
## Тесты
```bash
go test ./...
```