Юра
Юра
Вон enum тебе
Рома
такой синтаксис не работает в postgres
Vlad
У тебя сам енам контролирует инвариант
Vlad
Зачем оно в бд?
Юра
Например миграции какие-то
Юра
И как-то спокойнее когда там енам
Vlad
Михаил
Vlad
Ок, зачем тогда енам на уровни пыхи? раз бд следит за этим
Михаил
Vlad
Nikolay
Не возникало ни разу проблем без енамов в бд
Vlad
Михаил
Ну давайте пойдём дальше:
Зачем нужны тесты?
Зачем нужны проверки на инварианты в логике?
Зачем нужно ооп?
Михаил
Что попробовать ? Сделать 2 constraint?
Да, один констрейнт работает на момент приёма данных от пользователя и принятия решений
Второй констрейнт со стороны бд работает на момент записи.
Так как бд - это стейт приложения, то оно должно уметь хранить валидные данные.
Ты сделаешь одну ошибку, забудешь проверить тип в рантайме, и будешь расплачиваться за это тем, что во время считывания данных будешь отваливаться. Возможно даже войдёшь в бесконечный цикл.
Ну и ещё я написал что enum это отсортированный сет, и по нему можно искать. Допустим это сет статусов и ты можешь найти все остальные статусы, следующие за определённым. Ну и сортировать по нему.
Плюс он весит меньше.
Михаил
К слову, раз уж мы тут начали сыпать абсурдом.
Как вы храните в своей постгрес имена, email, пароли. Короче короткие постоянно заполненные данные?
Varchar(n) или text ?
Юра
Та не, вариант просто не делай так никогда не канает
Юра
Это работает до первого случая когда это не сработает
Юра
Иначе можно прийти к логике зачем форин ключи если можно просто не создавать ситуации когда они не консистентны, зачем транзакции когда можно просто не создавать ситуации и т.д.
The Ant
Vlad
Михаил
Михаил
The Ant
Владимир
Михаил
The Ant
В мускле и енамы опасно юзать, там могут быть скрытые джойны, которые тебе запросы посадят на порядки по времени выполнения...
Михаил
Хорошо, переверну вопрос. Почему core team этого не сделала нативно?
Хорошо, давай и я переверну вопрос.
А postgres пользуется только программисты на симфони? А как же другие фреймворки и япы?
Почему мне нужно ограничивать в возможности … себя ограничивать? Разве абстракции и языки это не про ограничения?
Я не чувствую себя глупо 2 раза перепроверяя себя. Уж лучше я по факту вставки получу исключение, чем буду ловить неправильное поведения из-за [какие-то причины по которым кто-то или что-то записали неверное значение в бд]
Vlad
Vlad
Это ты с этого начал))) не я))
Михаил
Ещё один слабый аргумент
Vlad
Мой аргумент приложение должно быть единым источником знаний. Твои аргументы работают когда бардак в система, тогда да нужна дубина.
Михаил
1) Дополнительные проверки - это не про бардак в системе. Ну или киньте в меня камень кто не делал логических ошибок!
2) Мне нравится как ты игнорируешь ещё 2 бенефита которые приносят с собой enum
Vlad
Я их не игнорю, чуть позже отвечу
Рома
подскажите есть ли функционал генерации фейковой записи как в ларавел для тестирования
Рома
symfony fixtures аналог laravel factory?
Михаил
Рома
да в тестах это можно использовать или только через команду?
Рома
https://dev.to/jszutkowski/using-fixtures-in-testing-symfony-application-47n2
Михаил
DoctrineFixturesBundle это вроде просто способ создания и получения тестовых записей, а вот какими именно ты данными заполнишь - это up to you. Я использую fakerphp
Рома
$stmtService = app(StmtService::class);
$stmt = Stmt::factory()->create();
$model = $stmtService->findById($stmt->id);
$this->assertSame($model->id, $stmt->id);
аналог можно сделать тестам на laravel?
Михаил
Рома
$this->createMock(NewsRepositoryInterface::class)
вообще много кто пользуется таким подходм на практике?
Михаил
Михаил
Хотя это самообман чистой воды мокать репозитории
Рома
а у нас на laravel делали через фабрики фейковой модели и проверяли реальную запись в тестовой бд или статус запроса
Михаил
Рома
может быть faker не входит в рекомендацию symfony просто
Михаил
Если это функциональный тест, то никто не мокает репозитории и коннекшоны в целом
Рома
зачем так делать?
я предполагаю что фикстуры это аналог seed laravel, не лучше ли фейковые данные генерировать внутри фабрики?
Михаил
Михаил
А вообще видел либу, там можно было фисктуры объявлять в ямл файле и там фейкер был встроенный.
Ктонить помнит название?
Михаил
Михаил
Блин, ребят кто читает сообщения сразу как только их отправили, вы хоть спите?
Dmitriy
так будете же
Рома
устанавливаю symfony/test-pack , а он не работает
прелесть работы с symfony)
Dmitriy
вы не готовы (с)
Nikolay
Nikolay
То есть прям в репе написано 6.1 / 6.2 в зависимостях вижу 7.0 - странно что не работает да?:)
Nikolay
учитывая что в symfony выпилили phpunit-bridge вообще
Рома
так есть возможность запустить рhpunit в 7 версии?
Рома
как починить?
Рома
Nikolay
Nikolay
и сделай миграцию конфига
Nikolay
./vendor/bin/phpunit --migrate-configuration
Рома
та же ошибка
Рома
php composer_2_7_2.phar require --dev phpunit/phpunit ^10 -W