Size: a a a

2020 June 30

A

Aikidos in Go-go!
Локоть Анатолий
лёгкость или сложность сервиса по-моему значения не имеет. У меня и для лёгких и для сложных сервисов используются репозитории двух реализации - кеш и дб. Из бизнес логики работаю с кешом. При этом кэш - адаптер над бд. При получении данных кеш смотрит данные у себя - если есть выдает. Если нет - лезет в бд и кеширует в себя. Если идёт изменение данных кеш сразу дергает бд, затем инвалидирует данные у себя.
При этом для части данных кеш ин мемори, для части распределенный - редис, эластик.
А вы говорите "используйте" sql.db 😂
о, жму руку. у меня так же
источник

A

Aikidos in Go-go!
очень удобно
источник

ЛА

Локоть Анатолий... in Go-go!
Aikidos
о, жму руку. у меня так же
👍
источник

ЛА

Локоть Анатолий... in Go-go!
Roman Sharkov
если у нас Order и User связаны в некой транзакции - они часть одной сущности / одного интерфейса
Я понял идею с агрегатами)
источник

Н

Никита in Go-go!
Roman Sharkov
если у нас Order и User связаны в некой транзакции - они часть одной сущности / одного интерфейса
Так почему не сделать один общий интерфейс? Зачем разделять по сущностям? сущности будут постоянно пересекаться в операциях
источник

RS

Roman Sharkov in Go-go!
Никита
Так почему не сделать один общий интерфейс? Зачем разделять по сущностям? сущности будут постоянно пересекаться в операциях
несколько интерфейсов + embedding
источник

RS

Roman Sharkov in Go-go!
я предпочитаю делить как минимум на идемпотентные интерфейсы и интерфейсы записи
источник

Н

Никита in Go-go!
Roman Sharkov
я предпочитаю делить как минимум на идемпотентные интерфейсы и интерфейсы записи
А в чем профит?
источник

RS

Roman Sharkov in Go-go!
Никита
А в чем профит?
readability
источник

Н

Никита in Go-go!
Можно пример?
источник

RS

Roman Sharkov in Go-go!
Никита
Можно пример?
type APIWriter interface {
 Create(
   ctx context.Context,
   foo, bar, baz string,
 ) (*Object, error)
}

type APIReader interface {
 Find(
   ctx context.Context,
   ids []string,
 ) ([]*Object, error)
}

type API interface {
 APIWriter
 APIReader
}
источник

Н

Никита in Go-go!
Roman Sharkov
type APIWriter interface {
 Create(
   ctx context.Context,
   foo, bar, baz string,
 ) (*Object, error)
}

type APIReader interface {
 Find(
   ctx context.Context,
   ids []string,
 ) ([]*Object, error)
}

type API interface {
 APIWriter
 APIReader
}
Понял, спасибо
источник

МП

Мимо Проходящий... in Go-go!
Vitalii Solodilov
А никто не знает список CLI, которые парсят golang source code и выдают информацию о нем. Например, мне нужно найти список всех интерфейсов в package или файле
goland
источник

VS

Vitalii Solodilov in Go-go!
Мимо Проходящий
goland
так это же не кли
источник

МП

Мимо Проходящий... in Go-go!
вот и хорошо, и не надо cli
источник

VS

Vitalii Solodilov in Go-go!
Мимо Проходящий
вот и хорошо, и не надо cli
Я же написал use case, хочу сделать скриптик, который будет находить все интерфейсы в package\файле и генерировать моки. При чем здесь идейка?
источник

VS

Victor Safronov in Go-go!
а зачем нужен отдельный скриптик, если есть go generate?
источник

VS

Vitalii Solodilov in Go-go!
Victor Safronov
а зачем нужен отдельный скриптик, если есть go generate?
Ну мне тогда придется в каждом файле писать ее
источник

AK

Anton Kucherov in Go-go!
Vitalii Solodilov
Я же написал use case, хочу сделать скриптик, который будет находить все интерфейсы в package\файле и генерировать моки. При чем здесь идейка?
А вы что используете для тестирования?? Если к примеру https://github.com/stretchr/testify то для нее есть https://github.com/vektra/mockery
источник

VS

Victor Safronov in Go-go!
эм. ну да, в каждом интерфейсе, для которого нужен мок, требуется добавить одну строчку. скриптик для этого и нужен?
источник