my $action = $attrs->{_action} || '';
if ($action eq 'convert') {
unless ($key =~ s/^foreign\.//) {
- die "Unable to convert relationship to WHERE clause: invalid key ${key}";
+ $self->throw("Unable to convert relationship to WHERE clause: invalid key ${key}");
}
return $key;
} elsif ($action eq 'join') {
if ($attrs->{_aliases}{$type}) {
return join('.', $attrs->{_aliases}{$type}, $field);
} else {
- die "Unable to resolve type ${type}: only have aliases for ".
- join(', ', keys %{$attrs->{_aliases}{$type} || {}});
+ $self->throw( "Unable to resolve type ${type}: only have aliases for ".
+ join(', ', keys %{$attrs->{_aliases}{$type} || {}}) );
}
}
return $self->NEXT::ACTUAL::_cond_key($attrs, $key);
my $action = $attrs->{_action} || '';
if ($action eq 'convert') {
unless ($value =~ s/^self\.//) {
- die "Unable to convert relationship to WHERE clause: invalid value ${value}";
+ $self->throw( "Unable to convert relationship to WHERE clause: invalid value ${value}" );
}
unless ($self->_columns->{$value}) {
- die "Unable to convert relationship to WHERE clause: no such accessor ${value}";
+ $self->throw( "Unable to convert relationship to WHERE clause: no such accessor ${value}" );
}
push(@{$attrs->{bind}}, $self->get_column($value));
return '?';
if ($attrs->{_aliases}{$type}) {
return join('.', $attrs->{_aliases}{$type}, $field);
} else {
- die "Unable to resolve type ${type}: only have aliases for ".
- join(', ', keys %{$attrs->{_aliases}{$type} || {}});
+ $self->throw( "Unable to resolve type ${type}: only have aliases for ".
+ join(', ', keys %{$attrs->{_aliases}{$type} || {}}) );
}
}
$attrs = { %{ pop(@_) } };
}
my $rel_obj = $self->_relationships->{$rel};
- die "No such relationship ${rel}" unless $rel;
+ $self->throw( "No such relationship ${rel}" ) unless $rel;
$attrs = { %{$rel_obj->{attrs} || {}}, %{$attrs || {}} };
my $s_cond;
if (@_) {
- die "Invalid query: @_" if (@_ > 1 && (@_ % 2 == 1));
+ $self->throw( "Invalid query: @_" ) if (@_ > 1 && (@_ % 2 == 1));
my $query = ((@_ > 1) ? {@_} : shift);
$s_cond = $self->_cond_resolve($query, $attrs);
}
sub create_related {
my ($self, $rel, $values, $attrs) = @_;
- die "Can't call create_related as class method" unless ref $self;
- die "create_related needs a hash" unless (ref $values eq 'HASH');
+ $self->throw( "Can't call create_related as class method" )
+ unless ref $self;
+ $self->throw( "create_related needs a hash" )
+ unless (ref $values eq 'HASH');
my $rel_obj = $self->_relationships->{$rel};
- die "No such relationship ${rel}" unless $rel;
- die "Can't abstract implicit create for ${rel}, condition not a hash"
+ $self->throw( "No such relationship ${rel}" ) unless $rel;
+ $self->throw( "Can't abstract implicit create for ${rel}, condition not a hash" )
unless ref $rel_obj->{cond} eq 'HASH';
$attrs = { %{$rel_obj->{attrs}}, %{$attrs || {}}, _action => 'convert' };
my %fields = %$values;