-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Banners rotation #23
base: master
Are you sure you want to change the base?
Banners rotation #23
Conversation
return nil | ||
} | ||
|
||
func (q *Queue) RunConsumer(storage *storage.Storage, logger *logger.Logger) error { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Немного странное название метода очереди. Обычно это Push и Pop, а уже консюмер и прод/сер - это некая обёртка.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Просто это не совсем push или pop событие, именно именно инициализация потребителя,
то есть выполняется некоторое Run-событие (если точнее StartConsuming).
Если имеет смысл переименовать, то поправьте меня пожалуйста.
@@ -0,0 +1,5 @@ | |||
--- |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Для юнит-тестов можно просто создать структуру конфиг и записать в неё нужные данные напрямую в файле с тестом. Файлы конфигов тут лишние.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Там, где вызывается инициализация конфига единожды — поправил на определение конфига через структуру.
queue *queue.Queue | ||
} | ||
|
||
// Generate gRPC gateway. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Такое лучше вынести в файл generate.go и положить его в пакет server.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вынес в generate.go.
@@ -0,0 +1,139 @@ | |||
syntax = "proto3"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Описание апи должно лежать в /api/banner-api.proto, не очевидно потом где нужно искать описание апи.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Описание api и генератор gRPC вынес в API,
основная логика осталась в сервер, но использует структуры API.
db *gorm.DB | ||
} | ||
|
||
// Generate base methods for tables. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Убираем генерацию кода в отдельный файл.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вынес в generate.go.
"gorm.io/gorm" | ||
) | ||
|
||
type Storage struct { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Как я понял, везде идёт зависимость на конкретный тип, а не на интерфейс. Это плохо, надо описать интерфейс нашего стореджа, и в зависимостях использовать его. А уже реализация будет вот эта. Почему это хорошо - мы всегда можем заменить наш сторедж на мок или на что-то другое, что реализует нужный интерфейс.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Спасибо, сделал отдельно интерфейс.
* more accurate package structure * generators moved into Makefile
|
||
integration-test: | ||
# run tests separate to avoid superposition | ||
go test -race -count 5 -tags integration ./internal/storage/... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Я бы предложил запускать просто -tags integration ./... Тогда запустятся все тесты с нужным тегом.
|
||
lint: | ||
go get github.com/golangci/golangci-lint/cmd/golangci-lint | ||
golangci-lint run --disable exhaustivestruct --disable wrapcheck ./... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Было бы здорово если бы сделали для линтера конфиг.
Здравствуйте! Спасибо за выполнение домашнего задания, хорошая работа. На мой взгляд генерация crud методов для структур не очень хороший вариант, так как они могут изменяться независимо, а в данной работе кто-то может переписать сгенерёный код, но не поправить шаблон, в итоге при следующей генерации тот код потеряется. Принято 15/15. |
No description provided.