и метод:
type User struct{
Avatar string // relative image path
}
func(u User) toUrlAvatar() {
u.Avatar = fmt.Sprintf("http://domain/%s", u.Avatar)
}
Вытаскиваю данные через pgxscan в структуру и теперь чтобы url аватара привести в правильный вид, нужно циклом вызывать метод toUrlAvatar? Может есть альтернативные варианты?
https://pkg.go.dev/net/url ?
Не-не, например я вытаскиваю массив пользователей из бд, через pgxscan пихаю в массив []User, то Avatar будет /1/2/image.png, а надо чтобы было http://doman/1/2/image.png
Добрый дент, пару вариантов предложу: 1. Храните сразу в нужном виде в БД, лучше 1 раз за все время сконвертировать, чем каждый раз на каждом запросе это делать. Проще написать sql запрос который это сделает. 2. Используйте не автозагрузку в структуру, а через rows и скан, на моменте сканирования просто запускайте конвертацию прямо в репозитории (но по факту это архитектурная ошибка кмк
Изменение поля не через указатель, кстати
Конструктор хочешь чтоле
Понять как правильно такое сделать, в рнр делал метод типа s3Url("/1/2/image.png"), он же выдавал уже полный url, ессено массив всегда нужно было проходить, чтобы правильную структуру в ответ отдать
Кажется так и так придется проходится циклом по этому слайсу/массиву Лучше сделать presenter для этой структуры. Ты же их не миллиард отдаешь? Писать полный url в таблицу - ну такое себе, это не удобно не только в случае смены диска, но и если тебе с этими файлами надо что-то делать - поэтому я за относительный путь Ну если так хочется избежать доп. цикла то можешь в кастомном маршале это сделать или какую-нибудь либу accessor накрутить
10-15 итераций не много по идее) на счёт урл тоже так считаю
Если вы это потом куда-то отдаете запаковывая в условный json, то можно наверное накинуть свой тип вместо string и на уровне Marshal/Unmarshal реализовать все мутации что вам нужны. Но это мягко говоря не очень очевидные мувы, можно, наверное, иногда за такое огрести по шапке =)
Правильнее будет хранить весь url? Или конкатенацию делать через SELECT в бд?
Можно конечно сделать отдельную таблицу и туда конфиг запулить, затем джоинить и конкат делать 😄
если вы подключаетесь к s3, то не проще из структуры вытягивать ссылку?
Не понял? к s3 нет запросов с бека в момент формирования вьюхи
Обсуждают сегодня