[Moscow.pm] v2 просьба о ревью модуля DBIx::Struct
Nick Knutov
mail на knutov.com
Пт Янв 16 08:09:51 PST 2015
Очень интересная идея, но вы не используете плейсхолдеры в этом случае?
И если нет, то что с экранированием?
А если используете, то как потом собираете массив переменных для
плейсхолдеров? Если так же как WHERE, то это становится огромным и
нечитабельным, на мой вкус.
ps: сколько ни смотрел - не смог пока найти лучше варианта, чем писать
функцию, как мне подсказали тут несколько месяцев назад, которая будет
делать @where, @params, а потом собирает запрос целиком:
do { push @where, 'p.status=?'; push @params, ... } if ...;
...
$sql .= ' WHERE '. join ' AND ', @where if @where;
$hashref_array = sql_select($sql, @params)
pps: а у вас есть замеры профита от перевода процесса сборки sql запроса
на XS? На сколько это имеет смысл?
16.01.2015 0:30, Ivan Petrov пишет:
> Мы кстати пришли к тому же: чистый SQL лучше автоматических
> генераторов SQL.
>
> Далее мы стали думать как это улучшить.
> в итоге пришли к тому что идеально видимо просто посмотреть на то что
> происходит в мире других декларативных языков, когда требуется их
> автоматическая генерация.
>
> соответственно первый и самый распространенный пример - генерация
> HTML.
> далее мы взяли и запилили модуль который делает embedded-perl в SQL
> запросе, сделали синтаксис совместимым с Mojo и далее стало очень
> удобно (см. DBIx::DR).
>
> SELECT
> *
> FROM
> table
> JOIN
> table2 ON col1 = col2
> ...
> WHERE
> group_id = 10
>
> % if ($filter{from_date}) {
> AND date >= <%= $filter{from_date} %>
> % }
>
> % if ($filter{name}) {
> AND name ilike <%= '%' . $name . '%' %>
> % }
>
> и тому подобное.
>
> у нас проект около 3 млн строк сейчас, очень круто получается по MVC
> парадигме:
>
> lib/Controller/* - модули контроллеров
> lib/Model/* - модули моделей
> templates/* - темплейты
> sql/* - sql'и
>
> SQL-и вынесли в отдельные файлы и теперь во первых их редактим
> отдельным редактором с подсветкой синтаксиса
> во вторых они лежат в таком же дереве как и модели/итп.
>
> PS: я написал XS'ную реализацию embedded-perl парсера, но пока не
> опубликовал. все хочу DBIx::DR на него перевести, заодно плагин
> сделать для Mojo на нем же. будет быстрый темплейт.
> руки пока не доходят допилить
>
--
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130
Подробная информация о списке рассылки Moscow-pm