very basic outline
[dbsrgits/DBIx-Data-Store.git] / lib / DBIx / Data / Store / CRUD.pm
1 package DBIx::Data::Store::CRUD;
2
3 use strictures 1;
4
5 sub new {
6   my $proto = shift;
7   bless({ %{$_[0]} }, ref($proto)||$proto);
8 }
9
10 sub _sql { shift->{sql} }
11 sub _raw { shift->{raw} }
12
13 sub _run {
14   my $self = shift;
15   my ($run_type, $sql_type, @args) = @_;
16   my $sql = $self->_sql->{$sql_type}||die "No such sql type ${sql_type}";
17   $self->_raw->${\"run_${run_type}"}($sql, @args);
18 }
19
20 sub flatten { @{shift->_run('rowset', 'select_all', @_)} }
21
22 sub to_stream { shift->_run('rowstream', 'select_all', @_) }
23
24 sub clear { shift->_run('row','delete_all',@_) }
25
26 sub get { shift->_run('row','select_one',@_) }
27
28 sub replace { 
29   my $self = shift;
30   $self->_run('row','update_one', [ @{$_[1]}, @{$_[0]} ]);
31 }
32
33 sub add { shift->_run('row','insert_one',@_) }
34 sub remove { shift->_run('row','delete_one',@_) }
35
36 1;