All common helpers in one place.
[blog.pm-common-perl-mods.git] / Common-RDBO-Helper / lib / Common / RDBO / Helpers.pm
blob2a2d67d3d3be8ce69e7b964be1abc347a4b73b65
1 package Common::RDBO::Helpers;
3 use strict;
4 use warnings;
6 use Rose::Object::MixIn();
7 our @ISA = qw(Rose::Object::MixIn);
9 use Hash::Merge 'merge';
11 __PACKAGE__->export_tag(
12 all => [ qw/ get_prev_objects get_next_objects get_master_object / ] );
14 sub get_prev_objects {
15 my ( $self ) = shift;
16 my %args = @_;
18 my $manager = delete $args{ manager } || $self->meta->class . '::Manager';
20 my $column = delete $args{ column };
21 warn 'no column' and return unless $column;
23 warn 'column does not exist' and return
24 unless grep { $_ eq $column } @{ $self->meta->column_names };
26 my $cond = merge {
27 query => [ $column => { lt => $self->$column } ],
28 sort_by => "$column DESC",
30 \%args;
32 return $manager->get_objects( object_class => $self->meta->class, %$cond );
35 sub get_next_objects {
36 my ( $self ) = shift;
37 my %args = @_;
39 my $manager = delete $args{ manager } || $self->meta->class . '::Manager';
41 my $column = delete $args{ column };
42 warn 'no column' and return unless $column;
44 warn 'column does not exist' and return
45 unless grep { $_ eq $column } @{ $self->meta->column_names };
47 my $cond = merge {
48 query => [ $column => { gt => $self->$column } ],
49 sort_by => "$column ASC",
51 \%args;
53 return $manager->get_objects( object_class => $self->meta->class, %$cond );
56 sub get_master_object {
57 my $self = shift;
59 if ( $self->can( 'type' ) ) {
60 my $type = $self->type;
61 return $self->$type;
62 } else {
64 #my ( $rel ) =
65 #grep { $_->type eq 'many to one' } $self->meta->relationships;
66 #die $rel->name;
68 #my $master = $rel->name;
70 #return $self->$master;