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

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

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

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

17 ответов

11 просмотров

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

Ну с ходу в голову приходит совет «не использовать 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- Автор вопроса
Alex
даже для тестов?)

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

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

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

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

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
9
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
это группа токсиков или тех кто помогает?
Ибрагим
9
Я короче решил скомпилировать Nim в js, я думал он сработает как обычный транслятор. По итогу он мне создал файл с расширением js, и туда поместил кучу кода Вопрос, что это з...
𝕾𝖍𝖆𝖉𝖊 <suspense>
8
мы пытаемся подменить функцию, которая имеет меньше инструкций относительно функции, которой подменяем. https://www.reddit.com/r/jailbreakdevelopers/comments/w06ujy/mshookfun...
Óðinn
6
Всем здравствуйте!) У меня такой вопрос. Есть два роута, роут1 и роут2. Они связаны с очередью some_queue. По задаче предполагается, что есть два паблиша. Паблиш1 отправляет...
Format
10
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Добрый день! Хочу спросить совета. Хочется в скрипт добавить некую конструкцию, что скрипт создал файл, который нужно потом скопировать в определенное место. Нашел такой сп...
Mikhail
4
Карта сайта