Fixed typo
[dbsrgits/DBM-Deep.git] / lib / DBM / Deep / SQL / Util.pm
CommitLineData
4f0f6fff 1package DBM::Deep::SQL::Util;
2
3use strict;
4use warnings FATAL => 'all';
5
6sub _create {
7 my ($obj, $type, $data) = @_;
8 if ($type eq 'hash' || $type eq 'array') {
9 $obj->_insert(
10 'table' => 'rec_item',
11 'fields' => {
12 'item_type' => $type,
13 },
14 );
15 my $id = $obj->_lastid();
16 $obj->_insert(
17 'table' => 'rec_'. $type,
18 'fields' => {
19 'id' => $id,
20 },
21 );
22 return $id;
23 }
24 else {
25 $obj->_insert(
26 'table' => 'rec_'. $type,
27 'fields' => $data,
28 );
29 return $obj->_lastid();
30 }
31}
32
33sub _lastid {
34 my ($obj) = @_;
35 my $sth = $obj->{'dbi'}->query('select last_insert_id()');
36 my $q = $sth->fetchall_arrayref();
37 return $q->[0]->[0];
38}
39
40sub _select {
41 my ($obj, @arg) = @_;
42 my %prm = @arg;
43 my $sth = $obj->{'dbi'}->select(\%prm);
44 return $sth->fetchall_arrayref();
45}
46
47sub _insert {
48 my ($obj, @arg) = @_;
49 my %prm = @arg;
50 return $obj->{'dbi'}->insert(\%prm);
51}
52
53sub _update {
54 my ($obj, @arg) = @_;
55 my %prm = @arg;
56 return $obj->{'dbi'}->update(\%prm);
57}
58
59sub _delete_sql {
60 my ($obj, $table, $where) = @_;
61 return $obj->{'dbi'}->delete($table, $where);
62}
63
64sub _clone_tree {
65 my ($obj, $data) = @_;
66 if (ref($data)) {
67 if ($data =~ /HASH/) {
68 my %nv = ();
69 foreach my $k (keys %$data) {
70 $nv{$k} = $obj->_clone_tree($data->{$k});
71 }
72 return \%nv;
73 }
74 elsif ($data =~ /ARRAY/) {
75 my @nv = ();
76 foreach my $i (0..$#{$data}) {
77 $nv[$i] = $obj->_clone_tree($data->[$i]);
78 }
79 return \@nv;
80 }
81 elsif ($data =~ /SCALAR/) {
82 my $nv = $obj->_clone_tree($$data);
83 return \$nv;
84 }
85 }
86 else {
87 my $nv = $data;
88 return $nv;
89 }
90}
91
92sub _tiearray {
93 my ($obj, $id) = @_;
94 my $rec = undef;
95 tie(@$rec, 'DBM::Deep::SQL::Array', (
96 'dbi' => $obj->{'dbi'},
97 'id' => $id,
98 'prefetch' => $obj->{'prefetch'},
99 ));
100 bless $rec, 'DBM::Deep::SQL::Array';
101 return $rec;
102}
103
104sub _tiehash {
105 my ($obj, $id) = @_;
106 my $rec = undef;
107 tie(%$rec, 'DBM::Deep::SQL::Hash', (
108 'dbi' => $obj->{'dbi'},
109 'id' => $id,
110 'prefetch' => $obj->{'prefetch'},
111 ));
112 bless $rec, 'DBM::Deep::SQL::Hash';
113 return $rec;
114}
115
1161;
117__END__