Size: a a a

2021 June 06

W

Warstone in Modern::Perl
Зачем использовать DBIC... Потому что удобнее писать:
$c->stash->record($c->SomeTableRS->create($c->req->params));

Чем кучу портянки по созданию записи, выборки ее дефолтов, экранированию и проверки ввода, перекладыванию результатов в стеш и формированию по результатам ответа.
источник

OP

Oleg Pronin in Modern::Perl
Первостепенный плюс это что это готовая и гибко расширяемая модель данных, а не просто портабельный заменитель ручных запросов
источник

W

Warstone in Modern::Perl
Олег, тут проблема в "А зачем мне модель"
источник

MG

Mr. Good in Modern::Perl
ну, не знаю, лично для меня понятнее и очевиднее, когда я вижу сам запрос, чем эту форму записи
источник

W

Warstone in Modern::Perl
Это пока у вас кода мало.
источник

MG

Mr. Good in Modern::Perl
его очень много на самом деле
источник

W

Warstone in Modern::Perl
Ну хорошо... А теперь вы добавляете в таблицу новое поле.
источник

MG

Mr. Good in Modern::Perl
ну хорошо, добавлю в запрос это поле
источник

W

Warstone in Modern::Perl
Вам надо переписать все SQL запросы. За меня в 90% случаев все сделает ORM
источник

W

Warstone in Modern::Perl
Я ему просто скажу что "А вот теперь у меня новое поле в этой таблице" и оно появится во всех местах, где я выбираю все поля и т.д.
источник

MG

Mr. Good in Modern::Perl
хорошо, а вы можете быстро взять из DBIC текст запроса и вручную его протестировать в БД? есть такая возможность?
источник

W

Warstone in Modern::Perl
Дальше, так как я могу сказать $record->field, я могу в field положить сложный тип (например JSON, когда база не поддерживает JSON'ов) и мне прозрачно его будут упаковывать и распаковывать
источник

W

Warstone in Modern::Perl
DBIC_TRACE=1 если прямо с боя. А так есть ->as_query
источник

MG

Mr. Good in Modern::Perl
ну не знаю, вы меня не убедили:) это опять же про технологию "жарки котлеты-полуфабриката" имхо:)
источник

W

Warstone in Modern::Perl
А у меня нету задачи вас убеждать. Я знаю что в 90% обычных ситуаций DBIC помогает. В 10% случаев он мешает. Так как работодателю важно чтобы качество кода было одинаковое (причем это важно даже больше чем если-бы оно было хорошее), то вот и просят всех не заниматься велосипедами, а использовать готовое.
источник

MG

Mr. Good in Modern::Perl
а как же "простые вещи должны оставаться простыми, а сложные - возможными"?:)
источник

W

Warstone in Modern::Perl
Опять-таки вы пишите на Perl. TIMTOWTDT работает и в случае с DBIC. И в критических местах вы можете писать на голом SQL.
источник

W

Warstone in Modern::Perl
Более того, у нас в коде такие места есть. Где прям голый sql сгружается в $c->schema->storage->dbh
источник

MG

Mr. Good in Modern::Perl
да я только за, но работодатели хотят DBIC:) а почему, я не могу понять:)
источник

W

Warstone in Modern::Perl
Потому что это больший уровень абстракции. На нем делать быстрее. И меньше тупых ошибок.
источник