1 package DBIx::Data::Store;
4 use Method::Signatures::Simple;
6 use DBIx::Data::Store::Command::Call;
7 use DBIx::Data::Store::Command::Row;
8 use DBIx::Data::Store::Command::Stream;
9 use DBIx::Data::Store::Command::Closure;
11 has 'connection' => (is => 'ro', lazy_build => 1); # , isa => 'DBIx::Connector'
13 has 'connect_info' => (is => 'ro', required => 1);
15 method connect (@connect_info) { # for DBI heads because I'm kind
17 connect_info => \@connect_info
21 method _build_connection {
22 DBIx::Connector->new(@{$self->connect_info});
25 method new_call_command ($sql, $args) {
26 return DBIx::Data::Store::Command::Call->new(
27 run => $sql, with => $args, against => $self->connection
31 method new_row_command ($sql, $args, $column_order) {
32 return DBIx::Data::Store::Command::Row->new(
33 run => $sql, with => $args, against => $self->connection,
34 column_order => $column_order
38 method new_stream_command ($sql, $args, $column_order) {
39 return DBIx::Data::Store::Command::Stream->new(
40 run => $sql, with => $args, against => $self->connection,
41 column_order => $column_order
45 method new_closure_command ($code) {
46 return DBIx::Data::Store::Command::Closure->new(
47 run => $code, against => $self->connection
51 __PACKAGE__->meta->make_immutable;