
Anton
02.11.2016
15:39:35
тут три крупных проекта, которые через внутреннее апи тесно "дружат"

Sergey
02.11.2016
15:39:48
хз я пока вижу кашу
и твоя задача - найти определенный уровень абстракции что бы добавление полей не влияло на логику работы приложения

Anton
02.11.2016
15:40:21
я не влияю и не могу повлиять на другие проекты

Google

Sergey
02.11.2016
15:40:27
ты и не должен
надо не предотвращать изменения а быть к ним готовым

Anton
02.11.2016
15:40:38
условно там работа идет с аккаунтами, а у меня с лидами

Sergey
02.11.2016
15:40:55
я все еще плохо представляю как добавление новых полей что-то ломает
раньше данных небыло - теперь они появились
ну ок
добавь просто сверху гору ивентов

Anton
02.11.2016
15:41:20
они были всегда, но в этом проекте они не учитывались
и надо, чтоб старые данные автоапдейтились при таких пирдухах
с бизнесом не поспоришь в данной ситуации

Sergey
02.11.2016
15:41:57
то есть у тебя какой-то интеграционный сервис, так?

Anton
02.11.2016
15:42:23
нет, црм + немного ерп + админка для лк
которая во второй версии станет еще и системой управления для таких же црм и кабинетов, которые манагеры будут втюхивать

Google

Anton
02.11.2016
15:44:08
при ес возможно восстановить данные из апи, но только если в апи тоже будет ес
потому что есть уже две версии апи, которые сильно различаются
в общем, все станет сложнее
+ мне придется перестраивать свою голову на эту новую для меня технологию, что тоже будет жрать время

Sergey
02.11.2016
16:07:53
это не новая технология)
у тебя СУБД так работают, лог транзакций во всяком случае
любая финансовая отчетность работает по схожему принципу

Anton
02.11.2016
16:18:21
я же написал "новая для меня")

Sergey
02.11.2016
16:29:48
use Sensio\Bundle\FrameworkExtraBundle\Configuration\{Route, Method};
а че, доктриновские аннотации такое не умеют?
дурачки
https://github.com/doctrine/annotations/releases/tag/v1.3.0
неделю назад пофиксили

Nadirq
03.11.2016
05:41:01
rest или rpc, вот в чем вопрос
http://www.jsonrpc.org/specification
кто-нибудь пользовал? какие минусы?

Fayozjon [CybernatiC]
03.11.2016
05:42:49
Rest

Nadirq
03.11.2016
05:44:48
не очень убедительно сейчас было)

Fayozjon [CybernatiC]
03.11.2016
05:47:11
Интегрировать будет удобнее. Всем привычно.

Nadirq
03.11.2016
05:47:25
https://habrahabr.ru/post/265845/

Google

Nadirq
03.11.2016
05:47:33
комменты тоже ок

Fayozjon [CybernatiC]
03.11.2016
05:48:08
Я считаю каждый сам должен прийти к ответу путем проб и ошибок

Sergey
03.11.2016
06:42:36
статья про http а не про rest
в целом там в комментариях обрисовали все
https://github.com/fastnorth/property-mapper
вполне себе ничего штука
https://github.com/ScriptFUSION/Mapper - тож годный

Fayozjon [CybernatiC]
03.11.2016
08:19:56
Ребят всем доброе время суток
Есть поле в mysql working hours имеет формат 08:00 - 20:00 к примеру, как осуществить выборку строк исключая закрытые заведения исходя из текущего времени?
спасибо большое

Aleh
03.11.2016
08:23:48
Оно как строка или как time? Там вообще есть time?

Fayozjon [CybernatiC]
03.11.2016
08:24:11
как строка

Fayozjon [CybernatiC]
03.11.2016
08:24:13
=(
в одной строке такое значение
08:00 - 20:00
к примеру

Aleh
03.11.2016
08:27:03
А, типа range?

Fayozjon [CybernatiC]
03.11.2016
08:30:01
ну подразумевает да
но на самом деле тип поля varchar
Для актуальности база импортируется через csv файлы могу переписать логику и переделать базу

Google

Fayozjon [CybernatiC]
03.11.2016
08:30:47
разделять на разные поля
но думаю будет накладнее
сроки уже вчера

Aleh
03.11.2016
08:55:27

Fayozjon [CybernatiC]
03.11.2016
08:56:57
Благодарю

Anton
03.11.2016
11:30:10
@mkusher а этот пруфовский ES в каком виде диффы хранит? или эту часть реализовывать самому надо?

Aleh
03.11.2016
11:30:35
он ивенты хранит

Anton
03.11.2016
11:32:40
хм, а как из ивентов тогда получаются актуальные объекты?

Aleh
03.11.2016
11:32:41
нормализовывать и денормализовывать ивент надо самому(у ивента есть поле payload, которое будет просто массив)

Anton
03.11.2016
11:32:55
ааа

Admin
ERROR: S client not available

Anton
03.11.2016
11:32:58
теперь всек

Aleh
03.11.2016
11:32:59

Anton
03.11.2016
11:33:10
про снапшоты я в курсе
я просто думал, хранятся только диффы, а тут получается целиком стейт объекта пихается?

Aleh
03.11.2016
11:34:25
не дифы
ивенты хранятся
ивент может никак объект не мутировать)

Anton
03.11.2016
11:35:10
но если мутирует, то с ивентом и дифф надо записать - я об этом и спрашиваю

Aleh
03.11.2016
11:35:19

Google

Aleh
03.11.2016
11:35:27
если ивент мутирует, то инфы из ивента достаточно
например у тебя покупатель может покупать что-нибудь
class Customer
public function buy(Item $item) { $this->recordThat(new CustomerBoughtItem($item)); }

Алексей
03.11.2016
11:36:53
так заполняется массив
$product_data[$result['related_id']] = $this->getProduct($result['related_id']);

Aleh
03.11.2016
11:36:58
в самом методе buy никаких мутаций не происходит

Алексей
03.11.2016
11:37:00
как добавить еще 1 поле?

Aleh
03.11.2016
11:38:07
но твоя модель должна реагировать на ивент
public function whenCustomerBoughtItem(CustomerBoughtItem $event) {
тут может быть какая-то логика, например можешь считать сколько за всю историю было куплено вещей
$this->boughtItemsInTotal++;
}
если ты не хранишь снапшоты, то модель просто поочереди все ивенты заново получит
и вернется к последнему актуальному стейту

Anton
03.11.2016
11:39:16
допустим, менеджер изменил адрес клиента - где должен записаться новый адрес? (старый можно взять из предыдущего стейта)

Aleh
03.11.2016
11:39:30
ты создаешь ивент, что адрес изменился
$this->recordThat(AddressHasChanged::byManager($newAddress, $manager);

Anton
03.11.2016
11:40:00
новый адрес - это свойства этого ивента?

Aleh
03.11.2016
11:40:20
да. в ивенте ты будешь хранить новый адрес и что еще нужно

Anton
03.11.2016
11:40:27
вот, теперь догнал
непривычно, что ивент хранит в себе часть стейта

Алексей
03.11.2016
11:41:19
Aleh?

Sergey
03.11.2016
11:41:24
ивент НЕ хранит в себе часть стэйта
ивент это ивент

Aleh
03.11.2016
11:41:33
это не часть стейта
это может быть ее часть, а может не быть
Aleh?
я не понял твой вопрос