Anonymous
да я сам уже не помню контекст
Anonymous
но что-то такое было
Herman
package errs -> errors
Anonymous
что?
Anonymous
переименовать?
Herman
конечно
Anonymous
так там же есть стандартная либа errors
Anonymous
чтобы конфликтов не было
Herman
ну ты ж можешь выбирать, что импортировать
Тимофей
Herman
router.HandleFunc("/api/getAllSongs", con.GgetAllPosts).Methods("GET")
router.HandleFunc("/api/makeNewPost", con.MmakeNewPost).Methods("POST")
router.HandleFunc("/api/findById/{post_id}", con.Ffindbyid).Methods("POST")
вкусовщина, но можно использовать subroute
Herman
функции типа func NewUserDb(dbclient *sql.DB) UserDb {
лучше писать в начале пакета, под структурой
Anonymous
ок
Herman
не уверен в надобности func init() { в пакете логгера, можно конфигурировать при старте приложения
Anonymous
а разница?
Herman
а разница, что придется искать, где он инициализируется
Herman
и ты вот можешь сказать, в какой момент выполнения будет выполнена эта функция?
Anonymous
да
Anonymous
при запуске приложения
Emil
при первом обращении к пакету вроде
Herman
а если бы не было строки logger.Info("Starting application")
Anonymous
ну она же есть)
Herman
если она сделана чиста для того, чтобы инициализровать пакет, то это костыль
Anonymous
Anonymous
так и есть
Herman
так а зачем он?
Anonymous
а решение какое тогда?
Anonymous
в мейне инициализировать?
Anonymous
хочется чтобы в мейне было мало кода
Herman
ну у тебя же есть app.Start
Herman
вот там
Anonymous
ок в старте понял
Emil
Раз на то пошло, кому не лень, посмотрите по архитектуре, работе с ошибками, всякому go way
(теперь еще и кеш на запросы)
Осталось только тесты написать, надеюсь
https://github.com/CookieNyanCloud/backend-test
Anonymous
Emil
Anonymous
так дают хоть какой-то респонс?
Anonymous
а ясно контора зажралась
Herman
еще мне не нравится архитектурно getDbClient() в app
я бы разбил это на пакет config, который возвращает конфиги, в том числе для db, а потом этот конфиг передается в репу, где и происходит open
Herman
ну и log.fatal кидаться будет наверх
Anonymous
Herman
Alexey
Эту переменную окружения надо создать?
Ну да. Способ создания зависит от целевой ОС 😊 Либо можно устанавливать ее прямо в shell скрипте запуска сервера (как временно существующую переменную оболочки - если для тестовых целей).
Herman
хотя не, херня тоже
Тимофей
Herman
https://github.com/nknorg/nkn-sdk-go/blob/6a2cf0700b0c5d3d92165adffb4050a9594ce066/config.go
Herman
если ты прикрутишь вайпер, то будет иначе, понятное дело
Herman
но в любом случае чтение конфига и Open sql я бы предпочел в разных местах
Herman
кроме чтения конфиг еще бы провалидировать
Anonymous
ок понял чекну спасибо
Anonymous
вопрос такой
Anonymous
это норм что у меня докер на винде нагревает систему жестко
Anonymous
проц жесткий видюха тоже
Anonymous
на пингвине все норм
Herman
Herman
по неймингам
Anonymous
???
Herman
Herman
и почему два интерфейса
Herman
а, это сервис и репа
Anonymous
один же
Herman
а почему репа в домене, а сервис в сервисе
Anonymous
а как иначе?
Herman
вообще рекомендуется объявлять интерфейс на месте использования
Anonymous
то есть сервис в репу перенести?
Anonymous
а зачем а для чего
Anonymous
а я понял
Herman
если у тебя интерфейс сервиса лежит в сервисе, то почему интерфейс репозитория лежит в не в репе, а в домене
Anonymous
интерфейс постсервис в репу кинутт
Herman
Anonymous
ок
Anonymous
type PostService interface {
GetAllPosts() ([]domain.Post, *errs.AppError)
MakeNewPost(image, name, published string) (*domain.Post, *errs.AppError)
FindPostById(id string) (*domain.Post, *errs.AppError)
}
Anonymous
это в домейн?
Anonymous
я верно понял?
Herman
ну желательно это туда, где этот интерфейс используется
Anonymous
все ок понял
Anonymous
а это критично?
Herman
нет