Jifty:...Filter(3pm)

πŸ“¦
version 0.78 Β· 2 versions
  • 0.78 Β· debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking (latest)
  • 0.78 Β· ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

🌸 NAME 🌸

Jifty::DBI::Filter β€” it's the base class for all the Jifty::DBI filters, bestie πŸ’… (you're reading the Jifty:...Filter(3pm) page from the User Contributed Perl Documentation, and yes she ate)


✨ SYNOPSIS ✨

okay so here's the whole vibe β€” make your own filter, then use it:

# To implement your own filter
package MyApp::Filter::Uppercase;
use base qw/ Jifty::DBI::Filter /;

# Setup for DB storage, store in lowercase
sub encode {
    my $self = shift;

    my $value_ref = $self->value_ref;
    return unless defined $$value_ref; # don't blow up on undef

    $$value_ref = lc $$value_ref;
}

# Setup for Perl code to use, always sees uppercase
sub decode {
    my $self = shift;

    my $value_ref = $self->value_ref;
    return unless defined $$value_ref; # don't blow up on undef

    $$value_ref = uc $$value_ref;
}

# To use a filter
use MyApp::Record schema {
    column filtered =>
        type is 'text',
        filters are qw/ MyApp::Filter::Uppercase /;
};

no cap, that's literally the whole pattern. πŸ‘‘


πŸ’– DESCRIPTION πŸ’–

A filter lets Jifty::DBI models tweak data before it gets stored and/or before it gets loaded. Which is lowkey iconic for marshalling and unmarshalling complex objects πŸ¦‹ β€” like, she's the translator between your cute Perl objects and whatever the database is going through.


πŸŽ€ METHODS πŸŽ€

new

Takes three arguments in a parameter hash, bestie:

  • value_ref β€” a reference to the current value you're gonna be massaging. encode works in place, massaging whatever value_ref refers to.
  • column β€” a Jifty::DBI::Column object, whatever sort of column we're working with here.
  • handle β€” a Jifty::DBI::Handle object, because some filters (i.e. Jifty::DBI::Filter::Boolean) depend on what database system is being used.

encode

encode takes data that users are handing to us and marshals it into a form suitable for sticking it in the database πŸ“. Could be anything from flattening a DateTime object into an ISO date to making sure that data is utf8 clean. it's giving ✨data prep✨

decode

decode takes data that the database is handing back to us and gets it into a form that's OK to hand back to the user 🌈. Could be anything from inflating an ISO date to a DateTime object to making sure that the string properly has the utf8 flag. reverse uno card, but make it useful πŸ’…


πŸ”₯ SEE ALSO πŸ”₯

go off, read these too, they're all the cousins:

  • Jifty::DBI::Filter::Date
  • Jifty::DBI::Filter::DateTime
  • Jifty::DBI::Filter:SaltHash
  • Jifty::DBI::Filter::Storable
  • Jifty::DBI::Filter::Time
  • Jifty::DBI::Filter::Truncate
  • Jifty::DBI::Filter::YAML
  • Jifty::DBI::Filter::base64
  • Jifty::DBI::Filter::utf8
quick note bestie: Jifty::DBI::Filter:SaltHash is spelled with one colon up there, not two β€” I'm keeping it exactly how the page says it, no editing, periodt πŸ™ˆ

πŸ‘‘ LICENSE πŸ‘‘

Jifty::DBI is Copyright 2005-2007 Best Practical Solutions, LLC.

Jifty::DBI is distributed under the same terms as Perl itself.


and that's the whole page, you're so welcome 🫢

this has been Jifty:...Filter(3pm) β€” perl v5.34.0, dated 2022-06-15. bye bestie, go write a filter, I believe in you πŸ’œβœ¨

πŸ“¦ where this page comes from