Showing 27 changed files with 52 additions and 99 deletions
Build.PL 1000755 → 1000644
File mode changed.
Changes 1000755 → 1000644
File mode changed.
MANIFEST.SKIP 1000755 → 1000644
File mode changed.
README 1000755 → 1000644
File mode changed.
+25 -59
lib/DBIx/Custom.pm
... ...
@@ -12,66 +12,40 @@ use DBIx::Custom::SQL::Template;
12 12
 
13 13
 
14 14
 ### Accessors
15
-sub user        : ClassObjectAttr { initialize => {clone => 'scalar'} }
16
-sub password    : ClassObjectAttr { initialize => {clone => 'scalar'} }
17
-sub data_source : ClassObjectAttr { initialize => {clone => 'scalar'} }
18
-
19
-sub options : ClassObjectAttr {
20
-    type       => 'hash',
21
-    initialize => {clone => 'hash', default => sub { {} }}
22
-}
23
-
24
-sub database     : ClassObjectAttr { initialize => {clone => 'scalar'} }
25
-sub host         : ClassObjectAttr { initialize => {clone => 'scalar'} }
26
-sub port         : ClassObjectAttr { initialize => {clone => 'scalar'} }
15
+sub dbh : Attr {}
27 16
 
28
-sub bind_filter  : ClassObjectAttr { initialize => {clone => 'scalar'} }
29
-sub fetch_filter : ClassObjectAttr { initialize => {clone => 'scalar'} }
17
+sub _query_caches     : ClassAttr { type => 'hash',  build => sub {{}} }
18
+sub _query_cache_keys : ClassAttr { type => 'array', build => sub {[]} }
19
+sub query_cache_max   : ClassAttr { build => 50 }
30 20
 
31
-sub no_bind_filters : ClassObjectAttr {
32
-    type       => 'array',
33
-    initialize => {clone => 'array', default => sub { [] }}
34
-}
21
+sub user         : HybridAttr { clone => 'scalar' }
22
+sub password     : HybridAttr { clone => 'scalar' }
23
+sub data_source  : HybridAttr { clone => 'scalar' }
24
+sub database     : HybridAttr { clone => 'scalar' }
25
+sub host         : HybridAttr { clone => 'scalar' }
26
+sub port         : HybridAttr { clone => 'scalar' }
27
+sub bind_filter  : HybridAttr { clone => 'scalar' }
28
+sub fetch_filter : HybridAttr { clone => 'scalar' }
35 29
 
36
-sub no_fetch_filters : ClassObjectAttr {
37
-    type => 'array',
38
-    initialize => {clone => 'array', default => sub { [] }}
39
-}
30
+sub no_bind_filters  : HybridAttr { type  => 'array', build => sub {[]}, 
31
+                                    clone => 'array' }
40 32
 
41
-sub filters : ClassObjectAttr {
42
-    type => 'hash',
43
-    deref => 1,
44
-    initialize => {
45
-        clone   => 'hash',
46
-        default => sub { {} }
47
-    }
48
-}
33
+sub no_fetch_filters : HybridAttr { type  => 'array', build => sub { [] },
34
+                                    clone => 'array' }
49 35
 
50
-sub formats : ClassObjectAttr {
51
-    type => 'hash',
52
-    deref => 1,
53
-    initialize => {
54
-        clone   => 'hash',
55
-        default => sub { {} }
56
-    }
57
-}
36
+sub options : HybridAttr { type  => 'hash', build => sub {{}}, clone => 'hash' } 
58 37
 
59
-sub result_class : ClassObjectAttr {
60
-    initialize => {
61
-        clone   => 'scalar',
62
-        default => 'DBIx::Custom::Result'
63
-    }
64
-}
38
+sub filters : HybridAttr { type  => 'hash', build => sub {{}},
39
+                           clone => 'hash', deref => 1 }
65 40
 
66
-sub sql_tmpl : ClassObjectAttr {
67
-    initialize => {
68
-        clone   => sub {$_[0] ? $_[0]->clone : undef},
69
-        default => sub {DBIx::Custom::SQL::Template->new}
70
-    }
71
-}
41
+sub formats : HybridAttr { type  => 'hash', build => sub { {} },
42
+                           clone => 'hash', deref => 1 }
72 43
 
73
-sub dbh : Attr {}
44
+sub result_class : HybridAttr { build => 'DBIx::Custom::Result',
45
+                                clone => 'scalar' }
74 46
 
47
+sub sql_tmpl : HybridAttr { build => sub {DBIx::Custom::SQL::Template->new},
48
+                            clone => sub {$_[0] ? $_[0]->clone : undef} }
75 49
 
76 50
 ### Methods
77 51
 
... ...
@@ -732,14 +706,6 @@ sub select {
732 706
     return $result;
733 707
 }
734 708
 
735
-sub _query_caches     : ClassAttr { type => 'hash',
736
-                                    auto_build => sub {shift->_query_caches({}) } }
737
-                                    
738
-sub _query_cache_keys : ClassAttr { type => 'array',
739
-                                    auto_build => sub {shift->_query_cache_keys([])} }
740
-                                    
741
-sub query_cache_max   : ClassAttr { auto_build => sub {shift->query_cache_max(50)} }
742
-
743 709
 sub _add_query_cache {
744 710
     my ($class, $template, $query) = @_;
745 711
     my $query_cache_keys = $class->_query_cache_keys;
lib/DBIx/Custom/Basic.pm 1000755 → 1000644
File mode changed.
lib/DBIx/Custom/MySQL.pm 1000755 → 1000644
File mode changed.
lib/DBIx/Custom/Query.pm 1000755 → 1000644
File mode changed.
lib/DBIx/Custom/Result.pm 1000755 → 1000644
File mode changed.
+27 -40
lib/DBIx/Custom/SQL/Template.pm
... ...
@@ -1,5 +1,5 @@
1 1
 package DBIx::Custom::SQL::Template;
2
-use Object::Simple;
2
+use Object::Simple; Object::Simple->build_class;
3 3
 
4 4
 use strict;
5 5
 use warnings;
... ...
@@ -7,23 +7,21 @@ use Carp 'croak';
7 7
 
8 8
 use DBIx::Custom::Query;
9 9
 
10
-# Accessor is created by Object::Simple.
11
-
12
-### Class-Object accessors
13
-
14
-# Tag start
15
-sub tag_start   : ClassObjectAttr {
16
-    initialize => {default => '{', clone => 'scalar'}
17
-}
18
-
19
-# Tag end
20
-sub tag_end     : ClassObjectAttr {
21
-    initialize => {default => '}', clone => 'scalar'}
22
-}
23
-
24
-# Tag syntax
25
-sub tag_syntax  : ClassObjectAttr {
26
-    initialize => {default => <<'EOS', clone => 'scalar'}}
10
+__PACKAGE__->add_tag_processor(
11
+    '?'      => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
12
+    '='      => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
13
+    '<>'     => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
14
+    '>'      => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
15
+    '<'      => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
16
+    '>='     => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
17
+    '<='     => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
18
+    'like'   => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
19
+    'in'     => \&DBIx::Custom::SQL::Template::TagProcessors::expand_in_tag,
20
+    'insert' => \&DBIx::Custom::SQL::Template::TagProcessors::expand_insert_tag,
21
+    'update' => \&DBIx::Custom::SQL::Template::TagProcessors::expand_update_tag
22
+);
23
+
24
+__PACKAGE__->tag_syntax(<< 'EOS');
27 25
 [tag]                     [expand]
28 26
 {? name}                  ?
29 27
 {= name}                  name = ?
... ...
@@ -41,27 +39,16 @@ sub tag_syntax  : ClassObjectAttr {
41 39
 {update key1 key2}    set key1 = ?, key2 = ?
42 40
 EOS
43 41
 
44
-# Tag processors
45
-sub tag_processors : ClassObjectAttr {
46
-    type => 'hash',
47
-    deref => 1,
48
-    initialize => {
49
-        clone => 'hash', 
50
-        default => sub {{
51
-            '?'             => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
52
-            '='             => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
53
-            '<>'            => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
54
-            '>'             => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
55
-            '<'             => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
56
-            '>='            => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
57
-            '<='            => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
58
-            'like'          => \&DBIx::Custom::SQL::Template::TagProcessors::expand_basic_tag,
59
-            'in'            => \&DBIx::Custom::SQL::Template::TagProcessors::expand_in_tag,
60
-            'insert'        => \&DBIx::Custom::SQL::Template::TagProcessors::expand_insert_tag,
61
-            'update'    => \&DBIx::Custom::SQL::Template::TagProcessors::expand_update_tag
62
-        }}
63
-    }
64
-}
42
+# Accessor is created by Object::Simple.
43
+
44
+### Class-Object accessors
45
+
46
+
47
+sub tag_start      : HybridAttr { build => '{', clone => 'scalar' }
48
+sub tag_end        : HybridAttr { build => '}', clone => 'scalar' }
49
+sub tag_syntax     : HybridAttr { clone => 'scalar' }
50
+sub tag_processors : HybridAttr { type  => 'hash', build => sub {{}},
51
+                                  clone => 'hash', deref => 1 }
65 52
 
66 53
 # Add Tag processor
67 54
 sub add_tag_processor {
... ...
@@ -234,7 +221,7 @@ sub _placeholder_count {
234 221
     return $count;
235 222
 }
236 223
 
237
-Object::Simple->build_class;
224
+1;
238 225
 
239 226
 
240 227
 package DBIx::Custom::SQL::Template::TagProcessors;
lib/DBIx/Custom/SQLite.pm 1000755 → 1000644
File mode changed.
t/00-load.t 1000755 → 1000644
File mode changed.
t/boilerplate.t 1000755 → 1000644
File mode changed.
t/dbix-custom-basic-sqlite.t 1000755 → 1000644
File mode changed.
t/dbix-custom-basic-timeformat.t 1000755 → 1000644
File mode changed.
t/dbix-custom-core-mysql-private.t 1000755 → 1000644
File mode changed.
t/dbix-custom-core-sqlite.t 1000755 → 1000644
File mode changed.
t/dbix-custom-core.t 1000755 → 1000644
File mode changed.
t/dbix-custom-mysql-private.t 1000755 → 1000644
File mode changed.
t/dbix-custom-mysql-timeformat.t 1000755 → 1000644
File mode changed.
t/dbix-custom-query.t 1000755 → 1000644
File mode changed.
t/dbix-custom-result-sqlite.t 1000755 → 1000644
File mode changed.
t/dbix-custom-sql-template.t 1000755 → 1000644
File mode changed.
t/dbix-custom-sqlite-timeformat.t 1000755 → 1000644
File mode changed.
t/dbix-custom-sqlite.t 1000755 → 1000644
File mode changed.
t/pod-coverage.t 1000755 → 1000644
File mode changed.
t/pod.t 1000755 → 1000644
File mode changed.