170 похожих чатов

Поделитесь плиз бестпрактикес у меня есть селект через горм в БД

где участвует time.Now(), в самом репозитории я прокинул интерфейс, который мне возвращает time.Now() в продакшн, и time.Date(забитая_дата) для тестов

но у меня есть модель, которая гормовским хуком AfterFind опять использует time.Now и проставляет нужные поля в зависимости от даты
какое решение для этого есть, кто-нибудь знает?
как мне мой интерфейс прокинуть в этот AfterFind? Хранить интерфейс time.Now() где-то глобально?

17 ответов

25 просмотров

когда вы переопределяете глобальные системные штуки, то скорее всего вам и правда глобально вынести это надо

Ну с ходу в голову приходит совет «не использовать gorm»

Alexey Popov
Ну с ходу в голову приходит совет «не использовать...

горм заменить на что угодно и задача останется той же, не знаю зачем ТС ее назвал

Alex- Автор вопроса
Alexey Popov
Ну с ходу в голову приходит совет «не использовать...

горм никак не вмешивается в логику по большому счету

Alex- Автор вопроса
Максим Федоров
когда вы переопределяете глобальные системные штук...

вы по сути делаете надстройку над языком, это не считая языка самый низкий уровень вашего кода

чтобы не путаться в терминологии и получить хороший результат - покажите кода пример)

Michael
чтобы не путаться в терминологии и получить хороши...

а что путаться? в системе надо сымитировать время 1 января 2024 года в таймзоне Europe/Moscow, тогда как ты в июне 2023 и посмотреть как операторы будут брать задачу в выходной

Максим Федоров
а что путаться? в системе надо сымитировать время ...

мне не понятно что там за интерфейсы и всё звучит как интеграционный тест

Michael
мне не понятно что там за интерфейсы и всё звучит ...

интерфейс времени, тут под интерфейсом не обязательно должен пониматься interface Foo

посмотрите в сторону https://github.com/nhatthm/go-clock

Alex- Автор вопроса

я думаю насчет monkey patch это норм идея для го?)

Alex
я думаю насчет monkey patch это норм идея для го?)

есть даже реализация 🙂 но это очень плохая идея

Alex
даже для тестов?)

я пользовал только 1 раз, когда плохая библиотека делала time.Now на который я никак не мог повлиять, но хотел протестировать поведение. https://github.com/bouk/monkey

вызывайте метод на модели, который вызовет clock.Now из нужного места

Alex- Автор вопроса
Илья О
вызывайте метод на модели, который вызовет clock.N...

да я уже глобальную переменную намутил, которая с Now() time.Time, и в тестах я ее подменяю)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта