Size: a a a

2020 June 07

VL

V L in Go-go!
Никита
Почему не должна? Раньше у вас метод для получения пользователя принимал такие параметры, теперь следующие. И этот метод используется повсеместно
у вас изменилась логика юзкейса?
источник

DP

Daniel Podolsky in Go-go!
Никита
Если сигнатура метода меняется, и метод используется много где, вам же прийдется везде ее менять
придется адаптеры писать. но это все же очевиднее, чем выхватывать ошибки компиляции в неожиданных местах
источник

DP

Daniel Podolsky in Go-go!
Никита
Почему не должна? Раньше у вас метод для получения пользователя принимал такие параметры, теперь следующие. И этот метод используется повсеместно
сильная связанность, прямой путь к комку грязи.
источник

Н

Никита in Go-go!
Окей, Антон вчера приводил как аргумент, что разбивать огромный Storage на UserStorage и тд стоит для того, что вдруг база поменялась для юзеров и так легче будет.

Как я понимаю, у вас интерфейс к БД содержит все методы, типа getUser, updatePost, которые использует юзкейс. Как вы решаете вопрос с несколькими БД и одним интерфейсом?
источник

DP

Daniel Podolsky in Go-go!
у меня нет как такового интерфейса к БД

у меня есть интерфейсы с методами, которые нужны соответствующим модулям, в этих модулях

и есть объект БД, который этим интерфейсам соответствует

если мой объект вдруг интерфейсам соответствовать перестанет после рефакторинга - я это увижу на компиляции, и смогу дополнить рефакторинг
источник

DP

Daniel Podolsky in Go-go!
меня в этом во все огорчают две вещи

[]SomeIfaceImplementation нельзя скастить в []SomeIface

func SomeMethod() SomeIfaceImplementation не удовлетворяет type OtherIface interface { SomeMethod() SomeIface }
источник

AK

Anton Kucherov in Go-go!
Никита
Окей, Антон вчера приводил как аргумент, что разбивать огромный Storage на UserStorage и тд стоит для того, что вдруг база поменялась для юзеров и так легче будет.

Как я понимаю, у вас интерфейс к БД содержит все методы, типа getUser, updatePost, которые использует юзкейс. Как вы решаете вопрос с несколькими БД и одним интерфейсом?
Не припомню чтобы я именно так это формулировал.
источник

Н

Никита in Go-go!
Переслано от Anton Kucherov
Вот у вас notesStorage более менее пример нормального интерфейса. Он оперирует бизнес моделями и отвязан от какой либо реализации. Т.е. по нему невозможо сказать что за база под этим интерфейсом лежит. SQL там или HTTP сервис... Что хотите то и подставляйте. Сегодня мнонлит и пишем в одну базу, завтра решили кусок унести в отдельный сервис, сели, написали новую реализацию для notesStorage, теперь она работает по HTTP. Остальной код при этом не изменится
источник

AK

Anton Kucherov in Go-go!
Ну да, в сравнении с непонятным абстрактным Storage он более менее норм, я так и сказал 🙂
источник

VS

Vyacheslav Sitnikov in Go-go!
Народ, подскажите плз по конвертации времени. В БД выставлено локальное время, на клиенте также локальное, но в таблице UTC.
По итогу, когда данные вычитываю, получаю время в том виде, как оно есть в БД, но при этом временная зона также стоит локальная.
Например в БД 10:00:00 по UTC, в time.TIme получается 10:00:00+03:00
Ну, думаю, нужно выставить правильный часовой пояс, но не тут-то было, после выставления часового пояса в UTC время также автоматически корректируется в 07:00:00 UTC
Конвертировал следующими способами:
utc, _ := time.LoadLocation("UTC")
date.In(utc)
и
date.UTC()
Результат один и тот же: https://play.golang.org/p/K6v-ewwB2MH
Не подскажете, как оставить время неизменным, но пояс сменить?
источник

VS

Vyacheslav Sitnikov in Go-go!
P.S. Ни в БД, ни в системе клиента нельзя выставить часовой пояс UTC по умолчанию
источник

VL

V L in Go-go!
В вашей ссылке время одно и тоже, а часовые пояса разные - MSK и UTC
источник

S

Skill in Go-go!
почему bcrypt выдает ошибку Invalid salt supplied?
использую этот github.com/jameskeane/bcrypt
bcrypt.Hash("bbbbbb", "$2y$10$M6WtafNXyrbW31/wZ1PtZe")
на пайтоне все нормально
источник

ВС

Владимир Столяров... in Go-go!
Vyacheslav Sitnikov
Народ, подскажите плз по конвертации времени. В БД выставлено локальное время, на клиенте также локальное, но в таблице UTC.
По итогу, когда данные вычитываю, получаю время в том виде, как оно есть в БД, но при этом временная зона также стоит локальная.
Например в БД 10:00:00 по UTC, в time.TIme получается 10:00:00+03:00
Ну, думаю, нужно выставить правильный часовой пояс, но не тут-то было, после выставления часового пояса в UTC время также автоматически корректируется в 07:00:00 UTC
Конвертировал следующими способами:
utc, _ := time.LoadLocation("UTC")
date.In(utc)
и
date.UTC()
Результат один и тот же: https://play.golang.org/p/K6v-ewwB2MH
Не подскажете, как оставить время неизменным, но пояс сменить?
А что за база/драйвер, по идее время должно вычитываться сразу с правильной зоной
источник

VS

Vyacheslav Sitnikov in Go-go!
V L
В вашей ссылке время одно и тоже, а часовые пояса разные - MSK и UTC
Изначальное время неверное, это UTC в часовом поясе MSK, я хочу его скорректировать, чтобы это был UTC в часовом поясе UTC, а получается, что конвертации не происходит, как время было неверным, так и осталось, только часовой пояс поменялся
источник

VS

Vyacheslav Sitnikov in Go-go!
В общем я ничего умней не придумал, чем сделать так:
_, offset := time.Now().Zone()
xxx = date.UTC().Add(time.Second * time.Duration(int64(offset)))
но мне кажется, что это... как-то костыльно
источник

VL

V L in Go-go!
Vyacheslav Sitnikov
Изначальное время неверное, это UTC в часовом поясе MSK, я хочу его скорректировать, чтобы это был UTC в часовом поясе UTC, а получается, что конвертации не происходит, как время было неверным, так и осталось, только часовой пояс поменялся
Добавьте разницу между часовыми поясами
источник

Н

Никита in Go-go!
@antonikucherov как вы решаете момент с циклическими зависимостями между моделями, когда они у вас с разных пакетах?
источник

VS

Vyacheslav Sitnikov in Go-go!
V L
Добавьте разницу между часовыми поясами
Ну я так и сделал, а какого-нибудь библиотечного решения не существует?
источник

AK

Anton Kucherov in Go-go!
Никита
@antonikucherov как вы решаете момент с циклическими зависимостями между моделями, когда они у вас с разных пакетах?
Пересматриваю контекст или модели. Циклическая зависимость между моделями явный знак того что они связаны, а значит либо модели либо контекст выбран неверно
источник