DBIx::Class::Helpers::Util - Helper utilities for DBIx::Class components
use DBIx::Class::Helpers::Util ':all';
my ($namespace, $class) = get_namespace_parts('MyApp:Schema::Person');
is $namespace, 'MyApp::Schema';
is $class, 'Person';
if (is_load_namespaces('MyApp::Schema::Result::Person')) {
print 'correctly structured project';
}
if (is_not_load_namespaces('MyApp::Schema::Person')) {
print 'incorrectly structured project';
}
if (assert_similar_namespaces('MyApp::Schema::Person', 'FooApp::Schema::People')) {
print 'both projects are structured similarly';
}
if (assert_similar_namespaces('MyApp::Schema::Result::Person', 'FooApp::Schema::Result::People')) {
print 'both projects are structured similarly';
}
# in a resultset
sub search {
my ($self, $search, $attrs) = @_;
$attrs->{order_by} = order_by_visitor($attrs->{order_by}, sub {
my $field = shift;
return 'foo_bar' if $field eq 'foo.bar';
return $field;
}) if $attrs && $attrs->{order_by};
$self->next::method($search, $attrs);
}
# in schema
sub connection {
my $self = shift;
my $args = normalize_connect_info(@_);
$args->{quote_names} = 1;
$self->next::method($args)
}
A collection of various helper utilities for DBIx::Class stuff. Probably only
useful for components.
This function allows you to easily transform
"order_by" clauses. See "SYNOPSIS"
for example.
Returns the namespace and class name of a package. See "SYNOPSIS" for
example.
Returns true if a package is structured in a way that would work for
load_namespaces. See "SYNOPSIS" for example.
Returns true if a package is structured in a way that would not work for
load_namespaces. See "SYNOPSIS" for example.
Dies if both packages are structured in the same way. The same means both are
load_namespaces or both are not. See "SYNOPSIS" for example.
Takes all of the various and interesting forms that can be passed to connect and
normalizes them into the final and simplest form, a single hashref.
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
This software is copyright (c) 2020 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it
under the same terms as the Perl 5 programming language system itself.