Writing more genering helpers.
[blog.pm-common-perl-mods.git] / Common-RDBO-Helper / lib / Common / RDBO / Helpers.pm
blobc2d998c9aeef6be6067e9b4273d12a6ef014793b
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 => [
13 qw/ get_prev_objects get_next_objects get_master_object /
17 sub get_prev_objects {
18 my ( $self ) = shift;
19 my %args = @_;
21 my $manager = delete $args{ manager } || $self->meta->class . '::Manager';
23 my $column = delete $args{ column };
24 warn 'no column' and return unless $column;
26 warn 'column does not exist' and return
27 unless grep { $_ eq $column } @{ $self->meta->column_names };
29 my $cond = merge {
30 query => [ $column => { lt => $self->$column } ],
31 sort_by => "$column DESC",
33 \%args;
35 return $manager->get_objects( object_class => $self->meta->class, %$cond );
38 sub get_next_objects {
39 my ( $self ) = shift;
40 my %args = @_;
42 my $manager = delete $args{ manager } || $self->meta->class . '::Manager';
44 my $column = delete $args{ column };
45 warn 'no column' and return unless $column;
47 warn 'column does not exist' and return
48 unless grep { $_ eq $column } @{ $self->meta->column_names };
50 my $cond = merge {
51 query => [ $column => { gt => $self->$column } ],
52 sort_by => "$column ASC",
54 \%args;
56 return $manager->get_objects( object_class => $self->meta->class, %$cond );
59 sub get_master_object {
60 my $self = shift;
62 if ( $self->can( 'type' ) ) {
63 my $type = $self->type;
64 return $self->$type;
65 } else {
66 #my ( $rel ) =
67 #grep { $_->type eq 'many to one' } $self->meta->relationships;
68 #die $rel->name;
70 #my $master = $rel->name;
72 #return $self->$master;