[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