Size: a a a

Golang Developers — русскоговорящее сообщество

2020 September 27

x

x-foby in Golang Developers — русскоговорящее сообщество
Николай
jsonb_pretty() ?)
Направление верное, функция не та.
Вам же сагрегировать результат в json надо, а не выдать json в виде отформатированной строки
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Но опять же, этот путь может вам не подойти в каких-то случаях, потому что сначала база маршаллит, потом апишка демаршаллит, потом снова маршиллит, если надо на клиент отдавать — надо смотреть по ситуации.
Но ходить в базу в цикле — это гиблое дело.
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
x-foby
Посмотрите, как можно переписать вашу функцию.
Это не идеальный вариант, потому как тут нужно больше контекста, чтоб всё это нормально оформить.
Код может не работать, потому как я делал "на глаз", но принципы должны быть понятны.

Продумывайте, что вы пишете. Нет смысла использовать left join, если вы фильтруете по полю приджойненной таблицы, возможно, стоит на стороне базы какую-то часть вообще сразу в json агрегировать (pg это позволяет, а у вас, судя по плейсхолдерам, pg).
Короче, вариантов решения куча.
`select
     t.id,
     t.name,
     t.description,
     t.difficulty,
     t.time,
     t.exp,
     e.id as exercis_id,
     e.name as exercis_name,
     e.description as exercis_description,
     e.difficulty as exercis_difficulty,
     e.image as exercis_image,
     e.is_geo as exercis_is_geo,
     e.training_id as exercis_training_id,
     e.time as exercis_time,
     e.type as exercis_type
   from trainings t
   join user_trainings ut on
     ut.training_id = t.id
   join exercises e on
     e.training_id = t.id
   where ut.user_id = $1
   order by t.id
   limit $2
   offset $3`,

Я так делал, это не совсем то, что должно. Просто будет выводится несколько раз инфа про тренировку, если у нее есть упражнение, с таким куском данных сложно работать. Я в общем-то направление понял, попробую вытаскивать сразу json
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Николай
`select
     t.id,
     t.name,
     t.description,
     t.difficulty,
     t.time,
     t.exp,
     e.id as exercis_id,
     e.name as exercis_name,
     e.description as exercis_description,
     e.difficulty as exercis_difficulty,
     e.image as exercis_image,
     e.is_geo as exercis_is_geo,
     e.training_id as exercis_training_id,
     e.time as exercis_time,
     e.type as exercis_type
   from trainings t
   join user_trainings ut on
     ut.training_id = t.id
   join exercises e on
     e.training_id = t.id
   where ut.user_id = $1
   order by t.id
   limit $2
   offset $3`,

Я так делал, это не совсем то, что должно. Просто будет выводится несколько раз инфа про тренировку, если у нее есть упражнение, с таким куском данных сложно работать. Я в общем-то направление понял, попробую вытаскивать сразу json
Ну так вы гошный-то код проанализируйте, а не только sql-запрос.
Там такой же результат на выходе как и у вас.
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
x-foby
Ну так вы гошный-то код проанализируйте, а не только sql-запрос.
Там такой же результат на выходе как и у вас.
А, пардон. А ЧТО ТАК МОЖНО БЫЛО?
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
x-foby
Ну так вы гошный-то код проанализируйте, а не только sql-запрос.
Там такой же результат на выходе как и у вас.
exs:         []models.Exercise{ex},
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
Это что за магии такие
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
?
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
А, это мой косяк, здесь другая конструкция убирает дубли тренировок
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
Чуть выше
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Ничего не понял, но ок
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
x-foby
Ничего не понял, но ок
Еще раз спасибо огромное, пошел изучать код и подстраивать запросы
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Николай
Еще раз спасибо огромное, пошел изучать код и подстраивать запросы
Спокойной ночи)
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
Кстати, еще вопрос, как сканить вот такие вещи
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
Вроде как есть отдельный тип данных intNil или что-то такое
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Есть да, sql.Null....
Кто-то их используете, кто-то указатели. Кому как удобней.
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
x-foby
Есть да, sql.Null....
Кто-то их используете, кто-то указатели. Кому как удобней.
Через указатели это как?
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Николай
Через указатели это как?
type Training struct {
 ID *int
}

При сканировании, если значение в базе null, значение поля будет nil.
Если поле в базе было не null, то значением будет адрес и поле можно будет разыменовать.
источник

Н

Николай in Golang Developers — русскоговорящее сообщество
x-foby
type Training struct {
 ID *int
}

При сканировании, если значение в базе null, значение поля будет nil.
Если поле в базе было не null, то значением будет адрес и поле можно будет разыменовать.
Понял, спасибо
источник
2020 September 28

А

Артем in Golang Developers — русскоговорящее сообщество
всем привет. как узнать размер файла (отправляемого через форму) не дожидаясь пока он полностью загрузится?
источник