<div dir="ltr">It&#39;s just a package and I have in <a href="http://make_schema_at.pl">make_schema_at.pl</a> to apply the components that I want to use:<div><br></div><div><div>  make_schema_at(</div><div>    &quot;My::Schema::${class_name}&quot;,</div><div>    {</div><div>      exclude           =&gt; qr/_\d+$/,</div><div>      dump_directory    =&gt; &quot;$Bin/../lib&quot;,</div><div>      components        =&gt; [ &#39;+My::TraitFor::Result::ForceNULL&#39;, &#39;+My::TraitFor::Result::AuditLog&#39; ],</div><div>      schema_components =&gt; [ &#39;Schema::RestrictWithObject&#39; ],</div><div>      qualify_objects =&gt; 1, # prepend dpl/public in the __PACKAGE__-&gt;table(...) call<br></div><div>      db_schema    =&gt; $schema,</div></div><div>    }</div><div>  );</div><div><br></div><div>Cheers</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 3, 2017 at 1:34 PM, Rajesh Kumar Mallah <span dir="ltr">&lt;<a href="mailto:mallah@redgrape.tech" target="_blank">mallah@redgrape.tech</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
Thanks for that , it looks elegant .<br>
<br>
Could you please send some pointer to docs for Traits<br>
approach.<br>
<br>
regds<br>
<span class="HOEnZb"><font color="#888888">mallah.<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
&gt; Not sure if that&#39;s the best way to do it or if it&#39;s a good approach, but I<br>
&gt; have a trait which is applied to all result classes.<br>
&gt;<br>
&gt; TraitFor::Result::ForceNULL;<br>
&gt; use strict;<br>
&gt; use warnings;<br>
&gt;<br>
&gt; my $null = undef;<br>
&gt;<br>
&gt; sub insert<br>
&gt; {<br>
&gt;   my $self = shift;<br>
&gt;<br>
&gt;   for my $col ($self-&gt;columns) {<br>
&gt;     next unless defined $self-&gt;$col;<br>
&gt;     next unless $self-&gt;$col eq &quot;&quot;;<br>
&gt;<br>
&gt;     my $info = $self-&gt;result_source-&gt;column_<wbr>info($col);<br>
&gt;     $self-&gt;$col($null) if $info-&gt;{is_nullable};<br>
&gt;   }<br>
&gt;   return $self-&gt;next::method(@_);<br>
&gt; }<br>
&gt;<br>
&gt; sub update<br>
&gt; {<br>
&gt;   my $self      = shift;<br>
&gt;   my %to_update = $self-&gt;get_dirty_columns;<br>
&gt;<br>
&gt;   return $self-&gt;next::method(@_) unless keys %to_update;<br>
&gt;<br>
&gt;   for my $col (keys %to_update) {<br>
&gt;     next unless $to_update{$col} eq &quot;&quot;;<br>
&gt;     my $info = $self-&gt;result_source-&gt;column_<wbr>info($col);<br>
&gt;     $self-&gt;{_column_data}{$col} = $null if $info-&gt;{is_nullable};<br>
&gt;   }<br>
&gt;   return $self-&gt;next::method(@_);<br>
&gt; }<br>
&gt;<br>
&gt; 1;<br>
&gt;<br>
&gt; Best regards<br>
&gt;<br>
&gt; On Thu, Mar 2, 2017 at 5:14 PM, Rajesh Kumar Mallah &lt;mallah@redgrape.tech&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; By empty i mean string with length 0 ie &#39;&#39;<br>
&gt;&gt;<br>
&gt;&gt; __CODE__<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; I am posting to rest endpoint Automagically generated via<br>
&gt;&gt; Catalyst::Controller::DBIC::<wbr>API  there is no explicit code hand<br>
&gt;&gt; written by me.And that is why looking for a global filter.<br>
&gt;&gt;<br>
&gt;&gt; There are three great virtues of a programmer; Laziness, Impatience and<br>
&gt;&gt; Hubris -- Larry Wall.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt; Just curious: when you say &quot;prefilled with nothing&quot;, you mean the<br>
&gt;&gt; field<br>
&gt;&gt; is<br>
&gt;&gt; &gt; empty, or the field is filled with one or more white spaces (like &quot;<br>
&gt;&gt; &quot;),<br>
&gt;&gt; or<br>
&gt;&gt; &gt; the field is a &lt;select&gt; with the first &lt;option&gt; having the attribute<br>
&gt;&gt; &gt; &quot;value&quot; equals to &quot;&quot;? Or something else?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; gil<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Thu, Mar 02, 2017 at 10:25:27AM -0500, Rajesh Kumar Mallah wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Hi ,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I want to transform request parameters in GET &amp; POST requests<br>
&gt;&gt; &gt;&gt; so that any thing which is empty (string) gets converted/replaced<br>
&gt;&gt; &gt;&gt; my perl&#39;s undef (and DBIC&#39;s NULL).<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Why i need that:<br>
&gt;&gt; &gt;&gt; ====================<br>
&gt;&gt; &gt;&gt; I have edit form in my web app and some fields in the edit form<br>
&gt;&gt; &gt;&gt; are prefilled with nothing. On submission the DB raises an exception<br>
&gt;&gt; &gt;&gt; that an empty string is being inserted to a integer field.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Hence I feel like having a global filter that turns all blanks to<br>
&gt;&gt; &gt;&gt; undef.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; The question is where to put this global filter.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Regds<br>
&gt;&gt; &gt;&gt; mallah.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt; &gt;&gt; List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
&gt;&gt; &gt;&gt; Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
&gt;&gt; &gt;&gt; Searchable archive:<br>
&gt;&gt; &gt;&gt; <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">http://www.mail-archive.com/<wbr>catalyst@lists.scsys.co.uk/</a><br>
&gt;&gt; &gt;&gt; Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; ______________________________<wbr>_________________<br>
&gt;&gt; &gt; List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
&gt;&gt; &gt; Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
&gt;&gt; &gt; Searchable archive:<br>
&gt;&gt; &gt; <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">http://www.mail-archive.com/<wbr>catalyst@lists.scsys.co.uk/</a><br>
&gt;&gt; &gt; Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt; List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
&gt;&gt; Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
&gt;&gt; Searchable archive: <a href="http://www.mail-archive.com/" rel="noreferrer" target="_blank">http://www.mail-archive.com/</a><br>
&gt;&gt; <a href="http://catalyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">catalyst@lists.scsys.co.uk/</a><br>
&gt;&gt; Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
&gt;&gt;<br>
&gt; ______________________________<wbr>_________________<br>
&gt; List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
&gt; Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
&gt; Searchable archive:<br>
&gt; <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">http://www.mail-archive.com/<wbr>catalyst@lists.scsys.co.uk/</a><br>
&gt; Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
&gt;<br>
<br>
<br>
<br>
<br>
<br>
______________________________<wbr>_________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" rel="noreferrer" target="_blank">http://lists.scsys.co.uk/cgi-<wbr>bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" rel="noreferrer" target="_blank">http://www.mail-archive.com/<wbr>catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" rel="noreferrer" target="_blank">http://dev.catalyst.perl.org/</a><br>
</div></div></blockquote></div><br></div>