Size: a a a

2020 March 06

Д

Дмитрий in Go-go!
окей спасибо парни, подумаю что-то
источник

MD

Maxim Dororonin in Go-go!
Дмитрий
или скинь ссылку на пример, если видел подобное где-то
Возвращаешь функцию которая принимает тип твоего билдера и выставляет нужные condition. Гугли функциональные опции.
Только проблема такого подхода, что  абстрактный от стораджа интерфейс очень дорого тебе обойдётся. Нужно будет врапнуть каждое хранилище, что не имеет смысла особо.
источник

Д

Дмитрий in Go-go!
Artem
да, скорее всего
источник

Д

Дмитрий in Go-go!
источник

Д

Дмитрий in Go-go!
Maxim Dororonin
Возвращаешь функцию которая принимает тип твоего билдера и выставляет нужные condition. Гугли функциональные опции.
Только проблема такого подхода, что  абстрактный от стораджа интерфейс очень дорого тебе обойдётся. Нужно будет врапнуть каждое хранилище, что не имеет смысла особо.
я давно пишу на go, сам вопрос то не про то какой тип вернуть, функцию первого порядка, типизированную функцию или что-либо ещё. я вижу удобное мне API, но я не вижу как описать релизацию, чтобы было готово сегодня, и идти дальше.
источник

MD

Maxim Dororonin in Go-go!
Дмитрий
я давно пишу на go, сам вопрос то не про то какой тип вернуть, функцию первого порядка, типизированную функцию или что-либо ещё. я вижу удобное мне API, но я не вижу как описать релизацию, чтобы было готово сегодня, и идти дальше.
Так я же и описал как сделать интерфейс который ты хочешь на функциональный опциях) это сделать 5 минут, я к сожалению не на компе, поэтому не смогу код накидать, ещё и за рулем))
источник

Д

Дмитрий in Go-go!
Maxim Dororonin
Так я же и описал как сделать интерфейс который ты хочешь на функциональный опциях) это сделать 5 минут, я к сожалению не на компе, поэтому не смогу код накидать, ещё и за рулем))
ок) но я все равно не вижу саму реализацию. я пока набросаю то, как я это понял, чуть позже скину сюда. если будет время и желание, глянь то ли ты имел ввиду.
источник

MD

Maxim Dororonin in Go-go!
Дмитрий
ок) но я все равно не вижу саму реализацию. я пока набросаю то, как я это понял, чуть позже скину сюда. если будет время и желание, глянь то ли ты имел ввиду.
‘’’
type FindOptions struct {
 Active bool
 AfterCreatedAt time.time
}

type Option interface {
 apply(*FindOptions)
}

type findOption func(*FindOptions)

func(o findOption) apply(t *FindOptions) {o(t)}

func WithActive() Option {
 return findOption(func(opt *FindOptions) {
   opt.Active = true
 }
}

func Find(ctx, options ... Option) {
 opts := FindOptions{}
 for _, opt := range options {
   opt.apply(&opts)
 }
 // тут у тебя структура заполненная твоими кондишенами
}
‘’’

Сорри за форматирование было набрано с мобилы
источник

A

Artem in Go-go!
спасибо большое. оказывается проблема была в том, что я не закрыл транзакцию после выхода из функции )))
источник

D

DaySandBox in Go-go!
Message from Дмитрий deleted. Reason: external link (?)
источник

Д

Дмитрий in Go-go!
Я вот такое написал: play.golang.org/p/v5kfHZ826fN
По сути то же самое, только оно не гибкое все равно. Надо будет чуть больше логики, и все. Например добавить OR уже проблема
источник

Д

Дмитрий in Go-go!
хз, может не обмазываться этими репозиториями, взять орм и в хендлер напрямую отдавать
источник

MD

Maxim Dororonin in Go-go!
Дмитрий
Я вот такое написал: play.golang.org/p/v5kfHZ826fN
По сути то же самое, только оно не гибкое все равно. Надо будет чуть больше логики, и все. Например добавить OR уже проблема
Ну от этого никуда не денешься если хочешь такой интерфейс, имеет ли это смысл если это не реюзабельная либа - врядли)) Это же голанг, забудь о гибкости или пиши кучу кода XD
источник

мн

мистер никитос in Go-go!
Дмитрий
Я вот такое написал: play.golang.org/p/v5kfHZ826fN
По сути то же самое, только оно не гибкое все равно. Надо будет чуть больше логики, и все. Например добавить OR уже проблема
Охлол, тебе надо квери билдер на коленке сделать, или хотяб не хардкодить так все жестко
источник

Д

Дмитрий in Go-go!
мистер никитос
Охлол, тебе надо квери билдер на коленке сделать, или хотяб не хардкодить так все жестко
в том и суть, чтобы иметь ограниченное количество вариаций.
источник

мн

мистер никитос in Go-go!
Дмитрий
в том и суть, чтобы иметь ограниченное количество вариаций.
Фиксированное?
источник

Д

Дмитрий in Go-go!
ну, да, фиксированное, но довольно таки большое.
источник

MD

Maxim Dororonin in Go-go!
И несколько имплементаций стораджей под один интерфейс)
источник

MD

Maxim Dororonin in Go-go!
И поддержку транзакций туда же))
источник

R

Roman in Go-go!
Всем привет! Кто может подсказать несколько моментов по использованию tarantool/go-tarantool? Конкретная задача получить количество записей в определенном спейсе и батчами считать их в память для дальнейшей обработки. Пробовал через Call - не очень вышло. Буду рад помощи)
источник