Size: a a a

2020 September 17

ES

Eugene She in Yii Framework 3
Сергей Предводителев
Я для приёмочных делал миграции из приложения и так получал исходную БД. А для интеграционных чтобы она очищалась, нужно дамп использовать выходит
Ну и после тестов база же сама чистится если использовать фикстуры
источник

СП

Сергей Предводителев... in Yii Framework 3
Eugene She
Могу скинуть класс который генерит тестовую базу. Берет схему с основной базы и накатывает в тестовую.
Интересно, это как раз позволит избежать ручного создания дампа посленовых миграций
источник

СП

Сергей Предводителев... in Yii Framework 3
Давай :)
источник

ES

Eugene She in Yii Framework 3
Вообще делают консольное приложение которое берет миграции и накатывает в тестовую базу.

То есть обычно делаем

./yii migrate

А там получится что то типа

./tests/bin/yii migrate
источник

ES

Eugene She in Yii Framework 3
Оке в личку запилю
источник

СП

Сергей Предводителев... in Yii Framework 3
Eugene She
Оке в личку запилю
Спасибо!
источник

NO

Nex Otaku in Yii Framework 3
Eugene She
Могу скинуть класс который генерит тестовую базу. Берет схему с основной базы и накатывает в тестовую.
о, я тоже такое несколько раз делал )
источник

СП

Сергей Предводителев... in Yii Framework 3
С точки зрения деления слоев (ddd) транзакции должны быть только на инфраструктурном слое?
источник
2020 September 18

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
С точки зрения деления слоев (ddd) транзакции должны быть только на инфраструктурном слое?
И orm тоже
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
И orm тоже
То есть если я хочу сохранить какие то допустим 2 сущности в рамках одной транзакции - я делаю в инфраструктуре в репозитории метод для сохранения этих двух объектов, да?
источник

СП

Сергей Предводителев... in Yii Framework 3
То есть никакого управления транзакциями выше инфраструктуры.
источник

СП

Сергей Предводителев... in Yii Framework 3
Наткнулася на тему на форумн Yii, прям по вопросу полезная дискуссия :) https://yiiframework.ru/forum/viewtopic.php?f=34&t=42166
источник

М

Максим in Yii Framework 3
Всем привет.

Делаю сервис уведомлений. В нем три канала доставки: смс, почта, в сервис.

Всё вроде бы шло хорошо. Сделал каналы, типы уведомлений, подписчиков. Как дошло дело до проектирования отправки и шаблонов писем, то немного зашёл в ступор... У меня есть сейчас система рассылки сообщений в ней тоже есть каналы рассылки: смс и маил. Шаблоны писем.

Вопросы:
1. Стоит ли проектировать в системе уведомлений реализацию отправки сообщений по каналам, шаблоны писем, не смотря на то, что они уже есть такие же в системе рассылки? Либо мне из системы уведомлений просто передавать в систему рассылки?
2.  Может быть объединить эти два сервиса, раз они так тесно связаны?
источник

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
То есть если я хочу сохранить какие то допустим 2 сущности в рамках одной транзакции - я делаю в инфраструктуре в репозитории метод для сохранения этих двух объектов, да?
В сервисе
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
В сервисе
Сервис инфраструктурного уровня, которые будет вызывать репозитории?
источник

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
Сервис инфраструктурного уровня, которые будет вызывать репозитории?
Если ты используешь репозитории связанные с орм, то он будет в инфраструктуре, хотя лучше реализовать по-другому. В контроллере обернуть в транзакцию.
источник

AM

Alexander Makarov in Yii Framework 3
Максим
Всем привет.

Делаю сервис уведомлений. В нем три канала доставки: смс, почта, в сервис.

Всё вроде бы шло хорошо. Сделал каналы, типы уведомлений, подписчиков. Как дошло дело до проектирования отправки и шаблонов писем, то немного зашёл в ступор... У меня есть сейчас система рассылки сообщений в ней тоже есть каналы рассылки: смс и маил. Шаблоны писем.

Вопросы:
1. Стоит ли проектировать в системе уведомлений реализацию отправки сообщений по каналам, шаблоны писем, не смотря на то, что они уже есть такие же в системе рассылки? Либо мне из системы уведомлений просто передавать в систему рассылки?
2.  Может быть объединить эти два сервиса, раз они так тесно связаны?
У меня система оповещения была === системе отсылки сообщений всегда.
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
Если ты используешь репозитории связанные с орм, то он будет в инфраструктуре, хотя лучше реализовать по-другому. В контроллере обернуть в транзакцию.
Ну да, cycle orm.

В контроллере? Это там где обработка запроса от пользователя?
источник

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
Ну да, cycle orm.

В контроллере? Это там где обработка запроса от пользователя?
Можно сделать интерфейс репозитория и его реализацию, а уже внутри обращаться к сайкловскому репозиторию. Например:
class OrderRepository implements OrderRepositoryInterface
{
   //...
}
 
Такой репозиторий должен возвращать либо сущность, либо их коллекцию, либо их итератор, либо скаляр. В сервисы инжектится этот интерфейс. Все запросы к хранилищу идут через этот интерфейс. Он работает как апи, таким образом ты отвязываешься от конкретной реализации хранилища. То есть, у тебя сейчас заказы в основной rdbms, а ты решил вынести в нереляционную бд - нет проблем, сделал отдельную реализацию интерфейса и больше ничего менять не нужно. Хочешь вынести заказы во внешнюю систему - та же история, сделал отдельную реализацию интерфейса и заказы падают, скажем, сразу в 1с и оттуда же инфо по ним прилетает по api, опять же ничего больше менять не нужно.
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
Можно сделать интерфейс репозитория и его реализацию, а уже внутри обращаться к сайкловскому репозиторию. Например:
class OrderRepository implements OrderRepositoryInterface
{
   //...
}
 
Такой репозиторий должен возвращать либо сущность, либо их коллекцию, либо их итератор, либо скаляр. В сервисы инжектится этот интерфейс. Все запросы к хранилищу идут через этот интерфейс. Он работает как апи, таким образом ты отвязываешься от конкретной реализации хранилища. То есть, у тебя сейчас заказы в основной rdbms, а ты решил вынести в нереляционную бд - нет проблем, сделал отдельную реализацию интерфейса и больше ничего менять не нужно. Хочешь вынести заказы во внешнюю систему - та же история, сделал отдельную реализацию интерфейса и заказы падают, скажем, сразу в 1с и оттуда же инфо по ним прилетает по api, опять же ничего больше менять не нужно.
Это да, это я понимаю. Я не понимаю понятие транзакции... О них должен знать только инфраструктурный слой или же это понятие бизнес логики "сущность 1 и сущность 2 должны быть сохранены одновременно" и тогда можно на уровень usecases вытаскивать транзакции
источник