
Demuz
22.01.2018
16:14:56

Александр
22.01.2018
16:15:18
это рестапи ?

Demuz
22.01.2018
16:15:38
У меня, у моделей есть локальная структура ошибки. Кастомная. Которая, при ошибке, как ни странно, перезаписывает по указателю инфо об этом.

Александр
22.01.2018
16:15:39
ему кормят значение, оно должно положить в бд слой уже ID связанной сущности

Google

Александр
22.01.2018
16:16:21
у вас не достаточно гибко ?Например на редактировании там совсем другое поведение надо
а модель то одна

Demuz
22.01.2018
16:16:30

Александр
22.01.2018
16:17:26
там сущность с двумя ID, в пост кормят внешний ID, мы должны по базе прошерстить, если нашли быстренько записать внутренний в структуру модели. Внешний дальше игнорируется

Demuz
22.01.2018
16:17:37
а модель то одна
У меня у API модель одна. У него есть локальная структура ошибки. И у того, с чем работает апи, в результате Request тоже есть LocalErr. В тоге в финальном ответе от апи, юзер видит в чем была проблема, если она была. Типа того.

Александр
22.01.2018
16:18:32
нельзя валидацию в модели пихать, это грабли
завтра вы "по связям" или из другого места доберетесь до этой же самой модели, поотгребаете со всей это хренью.

Demuz
22.01.2018
16:19:22
У меня в модели только рельзьтат валидации. Не более.

Александр
22.01.2018
16:19:45
зачем блин в модели результат валидации?
она не должна про этот слой ничего

Demuz
22.01.2018
16:20:59
Может я валидацию не так понимаю.

Александр
22.01.2018
16:21:57
например есть у нас время, на клиенте это ISO формат, в бд это просто строка
но надо проверить что клиент не захреначил туда дату из прошлого, вообще не время

Google

Александр
22.01.2018
16:22:33
различные проверки на уникальность значения и прочее
макс мин для int

Demuz
22.01.2018
16:25:43
Можно и проверить.
Это же проверка на хрень, про которую вы говорили.

Александр
22.01.2018
16:30:07
validate := validator.New()
// часть прямо в структуре, тегами (если дефолтные правила)
validate.RegisterValidation("unique", func(fl validator.FieldLevel) bool { ..... })
err = validate.Struct(userModel.Data)
if err != nil {
if _, ok := err.(*validator.InvalidValidationError); ok {
responce.MakeInternalErrorResponce(err).WriteJson(w)
return
}
responce.MakeValidationErrorResponce(userModel, err.(validator.ValidationErrors)).WriteJson(w)
return
}
// Уже заполенная структура
addRequest, err := userModel.AddRequest()
далее уже кормим addRequest в бд
в AddRequest сущности приобразовываться в запрос бд

Demuz
22.01.2018
16:31:59
interface?

Александр
22.01.2018
16:32:12
что интерфейс?

Demuz
22.01.2018
16:32:25
э не. стойте. стойте. )))

Александр
22.01.2018
16:32:39
это метод модели

Demuz
22.01.2018
16:35:10
validator.ValidationErrors это ошибки? Это почти такая же логика как у меня с LocalErr, я имел ввиду, что я типа того пробовал реализовать. Верней не пробовал. А так и работает.

Александр
22.01.2018
16:35:27
ошибки

Demuz
22.01.2018
16:37:45
У меня приходит список разных моделей в запросе на создание и каждая из них должна создать в базе запись по своему, со своими проверками, либо не создать вобще, в зависимости от проверок. И тут каждый инстанс будет содержать только свою ошибку. Типа того. Насколько я понял, вы просто эти все ошибки еще в кучу собираете и возвращаете потом.
Но я по ходу вам не помогу. Еще зеленый. ?

Александр
22.01.2018
16:39:04
у меня валидация и работа с бд это не связанные вещи

Google

Александр
22.01.2018
16:39:18
кроме пожалуй вот подзапросов на уникальность

Demuz
22.01.2018
16:39:20
Я еще с таким значит не столкнулся.
У меня максимум что проверяется в бд, это лог\пас и наличие уже присутствия объекта в бд и все.

Александр
22.01.2018
16:40:51
я мог бы сначало проверить, но потом уже вторым запросом для использования выбрать
но два запроса в бд тяжко, она не реляционная, еще и распределенная
медленно, очень медленно

Demuz
22.01.2018
16:43:23
Не реляционная? Прикольно ) Я не представляю как так.
А она удаленная ? бд?

Александр
22.01.2018
16:44:18
через локальный агент ?

Demuz
22.01.2018
16:44:21
еще я хотел спросить, возможно к бд подключаться через юникс сокет? в го.

Александр
22.01.2018
16:44:41
ну это уже от драйвера зависит

John
22.01.2018
16:44:44

John
22.01.2018
16:45:18

Demuz
22.01.2018
16:45:40
А что может помешать ? :)
Я пока до этого не дошел. Помню видел такое в виде файла, а максимум опыта имею - это форвардинг с nginx на Unx сокеты веб приложений. И подумал если го соединится с локал бд таким образом, будет очень даже норм.

Yury
22.01.2018
16:46:42

Demuz
22.01.2018
16:47:10
Еще я phpШника один раз спросил, мол а можно в php соединиться на unix сокет базы? Значете что он мне ответил? Я же только бэк эндом в php занимаюсь, я же не айтишник. ???

Yury
22.01.2018
16:47:23
вопрос только, что вы хотите по их бинарному протоколу общаться?

Demuz
22.01.2018
16:47:51
Так якобы быстрей. Незнаю так это или нет.

Yury
22.01.2018
16:49:28
ну tcp это протокол, unix сокет это реализация в unix системах

Google

Yury
22.01.2018
16:49:33
наверное)
есть жи еще udp

Demuz
22.01.2018
16:51:43
Так можно и напрямую на сокет слать. Надо почитать. срочно, мне нужно почитааааать

Yury
22.01.2018
16:53:02
драйвер делает за вас всю эту работу и очень эффективно, быстрее не будет
можно еще и базу свою написать

Demuz
22.01.2018
16:53:53
я не хочу писать. мне интересно может ли это или нет. как бы нахрен по TCP на самого себя соединяться.
?

Александр
22.01.2018
16:54:12
это нормальная практика
бд то скорее всего придеться выносить
поэтому не парьтесь

Admin
ERROR: S client not available

Demuz
22.01.2018
16:54:43
Может прям в одро мускула вшить софт? ?

Yury
22.01.2018
16:56:44
нужно просто прочитать бинарный протокол к примеру мускула и потом слать по tcp
это не про драйвер
вы же как раз хотите напрямую слать

Demuz
22.01.2018
16:57:49
Стойте, я всегда думал что эта штука напрямую шлет. А сейчас по ходу догнал )))) Unix:/// это просто ссылка чтоли своего рода?
Разве не к файлу ведет?

Google

Kirill
22.01.2018
16:59:02

Demuz
22.01.2018
16:59:45
Это путь к сокету
О слава тебе. А по поводу быстрей не быстрей есть инфо? Мне не принципиальна скорость. Просто интерес. Товарищ выше говорил мол не быстрей чем TCP юзать.

Kirill
22.01.2018
16:59:54
Это параллельные виды подключений
Всё зависит от кейса, на самом деле

Yury
22.01.2018
17:00:40
в unix сокет может быть особым видом файла

Kirill
22.01.2018
17:00:57
Не может, а является

Yury
22.01.2018
17:01:56
ну да,
еще тип есть INET, которые требуют назначения порта
по идее драйвер переводит в рантайме ваши абстракции в байт код, поэтому можно сэкономить, но очень незначительно

Demuz
22.01.2018
17:08:25
Ща попробую. Софт только на локал базу придется перенести )
База удаленная блин ((

Anton
22.01.2018
17:52:46
Гоферы, а кто-нибудь пишет на Go бэкэнды-монолиты? Сейчас чё-то все упарываются по микросервисам, а я хочу попробовать переписать существующий монолит с Нода на Go, было бы круто, если у кого есть публичные репо, посмотреть на организацию файлов, раутов, на подходы к валидации. Заранее спасибо ✊?

Demuz
22.01.2018
17:53:26

Anton
22.01.2018
17:56:25
Что такое монолиты?
Ну как противоположность «микросервисов»; все части приложения в одном приложении, а не разбиты на общающиеся друг с другом по http или очереди сообщений маленькие приложения. Короче обычные большие сервера в одном приложении
?? пример микросервисов

Demuz
22.01.2018
17:57:25
У меня пока в одном, но хотел разбить в будущем )
А вот это нормальная же вроде практика?
455.457µs вот ска, быстрей никак не сделать? Может не паковать ответ через библиотечный сериализатор? Там короче http get, через библу, sql select пустой таблицы и ее же якобы сериализация в JSON ))))

Anton
22.01.2018
18:03:52
А вот это нормальная же вроде практика?
Нормальная, да, но это сложнее же гораздо, нужно писать логику общения всех элементов, тестировать это как-то в совокупности, нетфликсу — да, а у меня небольшие по нагруженности проекты

Demuz
22.01.2018
18:06:11
Мне всегда казалось, чем больше "сотовая" зависимость друг от друга, тем нестабильней система. А в плане гибкости - отлично.