Size: a a a

2020 March 06

а

а кто это in Go-go!
Roman Sharkov
да, но вопрос: почему это делает сервер?
ааааааааа
источник

а

а кто это in Go-go!
Roman Sharkov
ну так надо сразу писать)
мне кажется это очевидно
источник

а

а кто это in Go-go!
уф, как вам такое https://github.com/System-Glitch/goyave
источник

ВС

Владимир Столяров in Go-go!
Кстати, раз уж тут речь пошла за шаблоны: quicktemplate хорош, но, как я понял, требует заранее генерить код по шаблону. Но иногда все-же надо шаблоны подавать динамически. Хорошая ли идея делать это через плагины: генерить код по шаблону, компилять его в плагин и плагин подгружать в приложении
источник

а

а кто это in Go-go!
плагины в го не очень работают
источник

ВС

Владимир Столяров in Go-go!
А кто их использует, что с ними не так
источник

MB

Mika Bond in Go-go!
ребят как сделать unmarsh для [{"tag":"hjgg"},{"tag":"jijoijoij"}]
источник

MB

Mika Bond in Go-go!
byt := []byte(r.FormValue("tags"))
 var dat map[string]string
 if err := json.Unmarshal(byt, &dat); err != nil {
   panic(err)
 }
 fmt.Println(dat)
источник

MB

Mika Bond in Go-go!
так пишет такую ошибку
источник

MB

Mika Bond in Go-go!
json: cannot unmarshal array into Go value of type map[string]string
источник

A

Artem in Go-go!
Ребят, подскажите пожалуйста, а можно ли в go записать json в поле с типом jsonb таким образом, просто передавая строку. Что странно, если выполнить этот запрос в базе, то он вставит новую записать, а если через go, то запрос как будто игнорируется.
источник

Д

Дмитрий in Go-go!
Подскажите, как решаете вопросы бойлерплейта при работе с базой? Есть база в PostgreSQL, есть 10 таблиц, есть всякого рода условия по выборкам, на примере постов:
- выбрать все посты (...LIMIT 30)
- выбрать посты, на разделы которых подписан пользователь (JOIN subscriptions ... LIMIT 10)
- и т.д.

По сути, SELECT не меняется, но иногда добавляются JOINы и WHERE.

Вроде можно взять ORM, но я хочу сокрыть саму реализацию за интерфейсом.

Т.е. по сути у меня есть интерфейс
type PostsRepository interface {
   GetPosts(ctx context.Context, тут_хз_что) ([]Post, error)
}
в тут_хз_что нужно передать что-то, что будет влиять на выборку. Что передавать туда?
источник

Д

Дмитрий in Go-go!
Artem
Ребят, подскажите пожалуйста, а можно ли в go записать json в поле с типом jsonb таким образом, просто передавая строку. Что странно, если выполнить этот запрос в базе, то он вставит новую записать, а если через go, то запрос как будто игнорируется.
а через $1 пробовал []byte передавать?
источник

AS

Andrei 🦉 Sergeev in Go-go!
Дмитрий
Подскажите, как решаете вопросы бойлерплейта при работе с базой? Есть база в PostgreSQL, есть 10 таблиц, есть всякого рода условия по выборкам, на примере постов:
- выбрать все посты (...LIMIT 30)
- выбрать посты, на разделы которых подписан пользователь (JOIN subscriptions ... LIMIT 10)
- и т.д.

По сути, SELECT не меняется, но иногда добавляются JOINы и WHERE.

Вроде можно взять ORM, но я хочу сокрыть саму реализацию за интерфейсом.

Т.е. по сути у меня есть интерфейс
type PostsRepository interface {
   GetPosts(ctx context.Context, тут_хз_что) ([]Post, error)
}
в тут_хз_что нужно передать что-то, что будет влиять на выборку. Что передавать туда?
все возможные параметры явно, либо структуру, где все возможные параметры также явно перечислены

либо, как делают многие авторы херовых библиотек, использовать map[string]interface{}
источник

AS

Andrei 🦉 Sergeev in Go-go!
но я бы не заморачивался и сделал отдельный метод для каждой выборки, хорошие интерфейсы, как правило, получаются на основе кучи копипасты, когда ты точно знаешь что можно объединить и скрыть за интерфейсом, а что лучше оставить копипастой
источник

AS

Andrei 🦉 Sergeev in Go-go!
как бонус, большая часть ошибок связанных с неправильным типом аргументов / отсутствующими аргументами будет отлавливаться на этапе компиляции
источник

Д

Дмитрий in Go-go!
Andrei 🦉 Sergeev
все возможные параметры явно, либо структуру, где все возможные параметры также явно перечислены

либо, как делают многие авторы херовых библиотек, использовать map[string]interface{}
ну т.е. что-то вроде

type PostQueryConditions struct {
   AfterID uuid.UUID
   IsActive bool
   Votes int
   AuthorizedUserID uuid.UUID
}


а потом в реализации делать что-то вроде:

if pqc.IsActive {
   query = query.Where("is_active", true)
}

if !pqc.AfterID.IsNil() {
   query = query.Where("id > $", pqc.AfterID)
}

if pqc.Votes > 0 {
   query = query.Where("votes > $", pqc.Votes)
}
...

?
источник

Д

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

а

а кто это in Go-go!
Дмитрий
ну т.е. что-то вроде

type PostQueryConditions struct {
   AfterID uuid.UUID
   IsActive bool
   Votes int
   AuthorizedUserID uuid.UUID
}


а потом в реализации делать что-то вроде:

if pqc.IsActive {
   query = query.Where("is_active", true)
}

if !pqc.AfterID.IsNil() {
   query = query.Where("id > $", pqc.AfterID)
}

if pqc.Votes > 0 {
   query = query.Where("votes > $", pqc.Votes)
}
...

?
можно использовать билдер для этой структуры
источник

а

а кто это in Go-go!
будет выглядеть получше
источник