package DBIx::Class::ResultSource;
+### !!!NOTE!!!
+#
+# Some of the methods defined here will be around()-ed by code at the
+# end of ::ResultSourceProxy. The reason for this strange arrangement
+# is that the list of around()s of methods in this class depends
+# directly on the list of may-not-be-defined-yet methods within
+# ::ResultSourceProxy itself.
+# If this sounds terrible - it is. But got to work with what we have.
+#
+
use strict;
use warnings;
dbic_internal_try fail_on_internal_call
refdesc emit_loud_diag
);
+use DBIx::Class::SQLMaker::Util qw( normalize_sqla_condition extract_equality_conditions );
use SQL::Abstract 'is_literal_value';
use Devel::GlobalDestruction;
use Scalar::Util qw( blessed weaken isweak refaddr );
=head2 clone
- $rsrc_instance->clone( atribute_name => overriden_value );
+ $rsrc_instance->clone( atribute_name => overridden_value );
A wrapper around L</new> inheriting any defaults from the callee. This method
also not normally invoked directly by end users.
return $self;
}
-sub add_column {
+sub add_column :DBIC_method_is_indirect_sugar {
DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
shift->add_columns(@_)
}
=cut
-sub column_info {
+sub column_info :DBIC_method_is_indirect_sugar {
DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
#my ($self, $column) = @_;
$self->_ordered_columns([ grep { not $to_remove{$_} } @{$self->_ordered_columns} ]);
}
-sub remove_column {
+sub remove_column :DBIC_method_is_indirect_sugar {
DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
shift->remove_columns(@_)
}
=cut
-sub add_unique_constraints {
+sub add_unique_constraints :DBIC_method_is_indirect_sugar {
DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
my $self = shift;
=cut
-sub storage {
+sub storage :DBIC_method_is_indirect_sugar {
DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
$_[0]->schema->storage
}
$args->{columns_info} ||= $self->columns_info;
- my $vals = $self->schema->storage->_extract_fixed_condition_columns(
+ my $vals = extract_equality_conditions(
$args->{values},
($args->{carp_on_nulls} ? 'consider_nulls' : undef ),
);
$cols->{$args->{carp_on_nulls} ? 'undefined' : 'missing'}{$col} = undef;
}
else {
- # we need to inject back the '=' as _extract_fixed_condition_columns
+ # we need to inject back the '=' as extract_equality_conditions()
# will strip it from literals and values alike, resulting in an invalid
# condition in the end
$cols->{present}{$col} = { '=' => $vals->{$col} };
qw( columns relationships )
;
- my $equivalencies = $storage->_extract_fixed_condition_columns(
+ my $equivalencies = extract_equality_conditions(
$args->{foreign_values},
'consider nulls',
);
and
$ret->{join_free_condition} ne UNRESOLVABLE_CONDITION
and
- my $jfc = $storage->_collapse_cond( $ret->{join_free_condition} )
+ my $jfc = normalize_sqla_condition( $ret->{join_free_condition} )
) {
- my $jfc_eqs = $storage->_extract_fixed_condition_columns($jfc, 'consider_nulls');
+ my $jfc_eqs = extract_equality_conditions( $jfc, 'consider_nulls' );
if (keys %$jfc_eqs) {
# (may already be there, since easy to calculate on the fly in the HASH case)
if ( ! $ret->{identity_map} ) {
- my $col_eqs = $storage->_extract_fixed_condition_columns($ret->{condition});
+ my $col_eqs = extract_equality_conditions($ret->{condition});
my $colinfos;
for my $lhs (keys %$col_eqs) {