sub sources { return keys %{shift->source_registrations}; }
+=head2 storage
+
+ my $storage = $schema->storage;
+
+Returns the L<DBIx::Class::Storage> object for this Schema.
+
=head2 resultset
=over 4
$target->connection(@info);
}
+=head2 storage_type
+
+=over 4
+
+=item Arguments: $storage_type
+
+=item Return Value: $storage_type
+
+=back
+
+Set the storage class that will be instantiated when L</connect> is called.
+If the classname starts with C<::>, the prefix C<DBIx::Class::Storage> is
+assumed by L</connect>. Defaults to C<::DBI>,
+which is L<DBIx::Class::Storage::DBI>.
+
+You want to use this to hardcoded subclasses of L<DBIx::Class::Storage::DBI>
+in cases where the appropriate subclass is not autodetected, such as when
+dealing with MSSQL via L<DBD::Sybase>, in which case you'd set it to
+C<::DBI::Sybase::MSSQL>.
+
=head2 connection
=over 4
=over 4
-=item Arguments: $moniker, \@data;
+=item Arguments: $source_name, \@data;
=back
-Populates the source registered with the given moniker with the supplied data.
-@data should be a list of listrefs -- the first containing column names, the
-second matching values.
+Pass this method a resultsource name, and an arrayref of
+arrayrefs. The arrayrefs should contain a list of column names,
+followed by one or many sets of matching data for the given columns.
+
+In void context, C<insert_bulk> in L<DBIx::Class::Storage::DBI> is used
+to insert the data, as this is a fast method. However, insert_bulk currently
+assumes that your datasets all contain the same type of values, using scalar
+references in a column in one row, and not in another will probably not work.
+
+Otherwise, each set of data is inserted into the database using
+L<DBIx::Class::ResultSet/create>, and a arrayref of the resulting row
+objects is returned.
i.e.,
my ($self, $name, $data) = @_;
my $rs = $self->resultset($name);
my @names = @{shift(@$data)};
- my @created;
- foreach my $item (@$data) {
- my %create;
- @create{@names} = @$item;
- push(@created, $rs->create(\%create));
+ if(defined wantarray) {
+ my @created;
+ foreach my $item (@$data) {
+ my %create;
+ @create{@names} = @$item;
+ push(@created, $rs->create(\%create));
+ }
+ return @created;
}
- return @created;
+ $self->storage->insert_bulk($self->source($name)->from, \@names, $data);
}
=head2 exception_action