Commit | Line | Data |
54bed31b |
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; |