
Sergey
11.02.2018
11:12:52
вся соль в том что идея "у меня есть BalanceService и он это все делает" - это просто демонстрация лени и отсутствия воображения)

Andrey
11.02.2018
11:12:53
Нет не расппределенная, но планировалась с возможностью подключения другого сервера мускула

Alexander
11.02.2018
11:13:00

Sergey
11.02.2018
11:13:26

Google

Andrey
11.02.2018
11:13:26

Sergey
11.02.2018
11:13:29
типа такого?

Andrey
11.02.2018
11:14:53
Да только хранилась строгая структура.
А так похоже

Alan
11.02.2018
11:15:47

Sergey
11.02.2018
11:15:59
еще рас спрошу - ты знаешь как работают extra lazy ассоциации в доктрине?

Andrey
11.02.2018
11:16:50
Оно

Sergey
11.02.2018
11:17:33
но я бы лэджен на доктрине бы и не делал)

Google

Andrey
11.02.2018
11:18:55
Если совсем не в моготу и хочется все считать сразу создай свой em с хранением в redis
и грей каждый раз после деплоя редис кеш
Муторно выглядит но тогда быстро при большом объеме данных

Alexander
11.02.2018
11:19:19

Sergey
11.02.2018
11:20:04
вопрос в том нужны ли сервисы в сущностях для этого)

Andrey
11.02.2018
11:20:23
нет

Sergey
11.02.2018
11:20:33
нет
бизнес логика у тебя где?

Andrey
11.02.2018
11:20:37
SOLID

Sergey
11.02.2018
11:20:39
есть логика в сущностях?)

Andrey
11.02.2018
11:20:40
KISS
Нет

Sergey
11.02.2018
11:20:53
KISS
ой только не начинай, а то мне придется проверять что ты имеешь ввиду под этим

Andrey
11.02.2018
11:21:10
Скоро 14 февраля

Sergey
11.02.2018
11:21:11
и уже не совсем kiss

Andrey
11.02.2018
11:21:14
:)

Alan
11.02.2018
11:21:19

Sergey
11.02.2018
11:21:27

Google

Andrey
11.02.2018
11:22:05
Потому что, для того чтобы за инджектит сервис в сущность, нужно хакнуть доктриновский лисенер


smile
11.02.2018
11:22:06
Доброго дня снова! Скажите, а что вы использовали в качестве js клиента для отправки GraphQL запросов? Я использую библиотеки apollo-client и apollo-upload-client. Мне теперь нужно понять - это особенность этих библиотек или особенность Overblog GraphQL, а именно то, что, если отправлять мультипарт запрос с помощью apollo-upload-clien, то Overblog GraphQL не видит в запросе query и variables. Я залез в парсер запроса Overblog GraphQL - там он понимает, что может прийти мультипарт и ожидает его, но ожидает набор полей:
query
variables
operationName
В то время как Apollo посылает поля:
operations
map
Судя по всему еще и формат хранимого полей различается, так как я уже пробовал жестко присвоить operations в query. Не помогло. Вот Request Payload, который шлется у меня на сервер:
------WebKitFormBoundaryfEqDQZLBkEmGBjvm
Content-Disposition: form-data; name="operations"
{"query":"mutation ($performer: PerformerInput!) {\n Performer(input: $performer)\n}\n","variables":{"performer":{"id":null,"firstName":"","lastName":"","patronymic":"asas","instagramLink":"","youtubeLink":"","insiderInfo":"","image":null}}}
------WebKitFormBoundaryfEqDQZLBkEmGBjvm
Content-Disposition: form-data; name="map"
{"0":["variables.performer.image"]}
------WebKitFormBoundaryfEqDQZLBkEmGBjvm
Content-Disposition: form-data; name="0"; filename="blob"
Content-Type: text/plain
------WebKitFormBoundaryfEqDQZLBkEmGBjvm--
Данные у меня все тестовые, так что не боюсь публиковать. От Overblog GraphQL отказаться уже не могу. Но JS клиент могу взять любой. Подскажите мне выход, если вы знаете уже готовый сценарий отправки файла на Overblog GraphQL сервер. Буду очень благодарен. Ведь у меня нет времени писать собственный парсер запросов
на js вместо какогото спец клиента для graphql - юзаю обычный fetch, собирая запрос темплейтами es6. Пока не возникало необходимости какуюто либу тулить ещё


Sergey
11.02.2018
11:22:33

Andrey
11.02.2018
11:22:59
иногда это полезно

Sergey
11.02.2018
11:23:21

Andrey
11.02.2018
11:23:30
Но это нарушает принцип счистого кода. так ка увеличивает связанность

Sergey
11.02.2018
11:23:36
иногда это может свидетельствовать о неверной декомпозиции)

Andrey
11.02.2018
11:23:36
Ну смотри
Согласен
Все должно быть разумно, но пример большой буду писать

Sergey
11.02.2018
11:24:09
есть ситуации где выделение логики в сервис упрощает все, и есть наоборот. Но ты говоришь что ты вообще не хранишь логику в сущностях

Alan
11.02.2018
11:28:46

Sergey
11.02.2018
11:29:02
типа того
эх дожить бы до третьей доктрины где можно свои персистеры для сущностей ваять и коллекции


Andrey
11.02.2018
11:34:44
Есть проект, который пресдставляет из себя магазины, которые доступны на разных доменах, сайтов ограниченное кол-во основная идея что один и тот же товар продается в разных магазах. Не проблема вроде сделать сущность сайт, и запихнуть ее в базу, но товаров много а джойны и тем более join table я не люблю. Поэтому решено было хранить сайты в конфиге, и для этого был разработан сервис site. А для хранения типа сайта был сделан свой тип для доктрины котороер посути является array_type слегка расширенное, так вот это поле хранит сайт хендлы через запятую в базе, при загрузке срабатывал ивент доктрины в который был за инджектен сайт сервис который инициализирует array_collection и все сущности думают что это обычная аррай коллекция. Но возникла необходимость сделать каноникал для продуктов, и вот тогда было решение заинджектить сервис в сущность SITE потому что логика довольно мутная и именно был нужен сервис.
Он был за инжекжен прикрываясь Dependency Inversion принципом
Но в конце концов он был выпилен и сейчас занимается отдельный рендер не нарушая никаких принципов.


Alan
11.02.2018
11:37:34
$canonical = product->canonical($canonicalService) чем плохо?
продукт знает на каком он сайте

Google

Alan
11.02.2018
11:38:22
ну если любишь джойны)

Andrey
11.02.2018
11:38:29
Ну а насчет логики в сущностях если function getFullName () {return sprintf('%s-%s', $this->name, $this->surname) такую логику я использую
Ты хардкодишь сервис наймы?
Или просто инджектишь сервис в рантайме?

Alan
11.02.2018
11:39:57
просто инжект в метод

Andrey
11.02.2018
11:40:41
Не правильно выразился сущность в доктрин евентах получает свой сервис?
Или он в базе сохранен?
Я че собственно зашел, кто то юзает transchoice
У меня строка '{0}|{1}This video article is using this video|]1,Inf[These video articles are using using this video' не могу ее в translatiom.yml запихнуть ругаетсо


Sergey
11.02.2018
11:44:23
Есть проект, который пресдставляет из себя магазины, которые доступны на разных доменах, сайтов ограниченное кол-во основная идея что один и тот же товар продается в разных магазах. Не проблема вроде сделать сущность сайт, и запихнуть ее в базу, но товаров много а джойны и тем более join table я не люблю. Поэтому решено было хранить сайты в конфиге, и для этого был разработан сервис site. А для хранения типа сайта был сделан свой тип для доктрины котороер посути является array_type слегка расширенное, так вот это поле хранит сайт хендлы через запятую в базе, при загрузке срабатывал ивент доктрины в который был за инджектен сайт сервис который инициализирует array_collection и все сущности думают что это обычная аррай коллекция. Но возникла необходимость сделать каноникал для продуктов, и вот тогда было решение заинджектить сервис в сущность SITE потому что логика довольно мутная и именно был нужен сервис.
скажи, в чем с точки зреия клиентского кода разница между сущностью, которая хранит свои данные в базе, и сущностью, которая хранит данные на файловой системе?

Admin
ERROR: S client not available

Andrey
11.02.2018
11:44:56
предлагают сделать через name place holder типо 'video_is_using' и использовать фильтр но я как то для инглиша не заводил свой translation. yml

Sergey
11.02.2018
11:44:57
или вся проблема в том что ты не знаешь как подружить эти сущности на уровне доктрины?
или другое - нафига вообще для урлов что-то в сущность пихать?
это ж чисто ui layer

Alan
11.02.2018
11:46:19
каноникал то да только в разметку нужен а не для логики

Andrey
11.02.2018
11:47:17

Sergey
11.02.2018
11:47:54

Andrey
11.02.2018
11:48:01

Google

Sergey
11.02.2018
11:48:09

Andrey
11.02.2018
11:48:15
Ну да
Уже убрали
Для того что бы сгенерить каноникал нужно много данных, в результате это все переместилось в свой сервис бандла продуктов.

Sergey
11.02.2018
11:50:21
и я не боюсь джойнов)

Andrey
11.02.2018
11:50:29
Но он не может быть просто products/%path

Sergey
11.02.2018
11:50:43
у меня вполне может быть отдельная сущность CanonicalUrl
которая говорит что куда
и это будет отдельная хрень и продукт об этом всем ничего знать не будет

Andrey
11.02.2018
11:51:14
Для меня сущность это то что хранится где либо?

Sergey
11.02.2018
11:51:20
я вижу проблему в желании все пихать в сущность продукта

Andrey
11.02.2018
11:51:22
у тебя такой же взгляд?

Sergey
11.02.2018
11:52:29
у тебя такой же взгляд?
для меня сущность это сущность, именно в терминах бизнеса. То есть у меня продукт с точки зрения UI может представляться несколькими сущностями, каждая из которых вполне независима (ProductPrice, ProductDetails, Discounts, CanonicalUrl и т.д.)

Andrey
11.02.2018
11:53:09
Нет сущность продукта хранит только path конечный endpoint в зависимости от созданных адаптеров для сайтов разделов строится полный пункт и свой собственный router это все разруливает, дергая dynamicServiceFacade который резолвит конкретные адаптеры которые в конце концов дергают рендеры и процессоры

Sergey
11.02.2018
11:53:41
у меня это не так
и меня интересуют люди которые считают что надо именно так. Пока я дописал себе в список проблем боязнь джойнов и овер оптимизация запросов до того как возникает проблема

Andrey
11.02.2018
11:55:27

Sergey
11.02.2018
11:55:42
ведь это не удобнее, это как у все а у всех не очень хорошо)

Andrey
11.02.2018
11:56:36