DBIx::C...erColumn(3)

πŸ’– NAME πŸ’–

okay so this is the DBIx::C...erColumn(3) page β€” yes, the header is doing its little truncation thing, iconic β€” from User Contributed Perl Documentation, and the module is DBIx::Class::FilterColumn: Automatically convert column data. πŸ’…βœ¨

✨ SYNOPSIS ✨

In your Schema or DB class, add FilterColumn to the top of the component list. Slay.

__PACKAGE__->load_components(qw( FilterColumn ... ));

Then set up filters for the columns you want to convert, bestie:

__PACKAGE__->filter_column( money => {
    filter_to_storage => 'to_pennies',
    filter_from_storage => 'from_pennies',
});

sub to_pennies   { $_[1] * 100 }

sub from_pennies { $_[1] / 100 }

1;

πŸ¦‹ DESCRIPTION πŸ¦‹

This component is meant to be a more powerful, but less DWIM-y, DBIx::Class::InflateColumn. One of the major issues with said component is that it only works with references. Generally speaking, anything that can be done with DBIx::Class::InflateColumn can be done with this component. no cap. 🫢

πŸ’… METHODS πŸ’…

πŸŽ€ filter_column πŸŽ€

__PACKAGE__->filter_column( colname => {
    filter_from_storage => 'method'|\&coderef,
    filter_to_storage   => 'method'|\&coderef,
})

This is the method you need to call to set up a filtered column. It takes exactly two arguments: the first being the column name, the second being a hash reference with filter_from_storage and filter_to_storage set to either a method name or a code reference. In either case the filter is invoked as:

$result->$filter_specification ($value_to_filter)

with $filter_specification being chosen depending on whether the $value_to_filter is being retrieved from or written to permanent storage. iykyk. ✨

If a specific directional filter is not specified, the original value will be passed to/from storage unfiltered. periodt.

🌸 get_filtered_column 🌸

$obj->get_filtered_column('colname')

Returns the filtered value of the column. cute and simple. πŸ’–

πŸ’œ set_filtered_column πŸ’œ

$obj->set_filtered_column(colname => 'new_value')

Sets the filtered value of the column. slay. πŸ’…

πŸ”₯ EXAMPLE OF USE πŸ”₯

Some databases have restrictions on values that can be passed to boolean columns, and problems can be caused by passing a value that perl considers to be false (such as undef). 😭

One solution to this is to ensure that the boolean values are set to something that the database can handle β€” such as numeric zero and one β€” using code like this:

__PACKAGE__->filter_column(
    my_boolean_column => {
        filter_to_storage   => sub { $_[1] ? 1 : 0 },
    }
);

In this case the filter_from_storage is not required, as just passing the database value through to perl does the right thing. iconic. πŸ‘‘

🌈 FURTHER QUESTIONS? 🌈

Check the list of additional DBIC resources. πŸ¦‹

This module is free software copyright by the DBIx::Class (DBIC) authors. You can redistribute it and/or modify it under the same terms as the DBIx::Class library. πŸ’–


mwah πŸ’‹ that’s the whole page, bestie! this was the DBIx::C...erColumn(3) page, brought to you by perl v5.42.0 and dated 2025-01-22 β€” go slay your columns ✨🫢

πŸ“¦ where this page comes from