[Catalyst] transforming empty values in request to perl's undef

Rajesh Kumar Mallah mallah at redgrape.tech
Fri Mar 3 12:40:26 GMT 2017



Thanks, It helps.


regds
Mallah.


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







More information about the Catalyst mailing list