EP templates for Mojo::Pg
Closed this issue · 6 comments
How about addon to use .ep templates for queries?
Example of named parameters:
$db->query('insert into names (name) values (<%= $name %>)', name => 'Sara');
Full support for perl will make it possible to build queries:
$db->query(q{
select
*
from
names
where
<% if(defined $name) { %>
"name" = <%= $name %>
<% } elseif( defined $id ) { %>
"id" = <%= $id %>
<% } %>
}, id => 1);
If you need something like this you can of course use Mojo::Template directly. That said, this is just begging to get sql-injection-attacked by people who don't understand what that is. I'm going to preemptively close this as I would see it as nearly a security issue if Mojo::Pg allowed this.
Suggested approach could also use placeholders instead of directly using values.
Placeholders already exist. The only reason I can imagine for using templates is to do things that placeholders do not allow, like picking a column name dynamically for example (as the OP does).
@jberger You're right about the sql-injection, so you can not directly use the Mojo::Template. It needs a hack to replace the values in the ?
.
If I try to make these templates. What namespace is better to use for the package?
I highly HIGHLY recommend prototyping this off of CPAN (as in, try it in a real application before putting it online). I consider any exploration of this kind of module to be really dangerous. Anyway this isn't the right place to discuss a new module, please either continue it on the universe mailing list (brand new!) https://groups.google.com/forum/#!forum/mojolicious-universe or else on prepan.