Showing 12 changed files with 280 additions and 149 deletions
+6
Changes
... ...
@@ -1,3 +1,9 @@
1
+0.1646
2
+  add feture. all model class in namespace is included by include_model
3
+  rename experimental include_table to include_model
4
+  rename experimental table to model
5
+  rename experimental DBIx::Custom::Table to DBIx::Custom::Model
6
+  remame experimental DBIx::Custom::Table::name() to DBIx::Custom::Model::table();
1 7
 0.1645
2 8
   removed experimental base_table() for class expandability.
3 9
   experimental table() can't set table object any more.
+89 -51
lib/DBIx/Custom.pm
... ...
@@ -1,6 +1,6 @@
1 1
 package DBIx::Custom;
2 2
 
3
-our $VERSION = '0.1645';
3
+our $VERSION = '0.1646';
4 4
 
5 5
 use 5.008001;
6 6
 use strict;
... ...
@@ -14,7 +14,7 @@ use DBIx::Custom::Result;
14 14
 use DBIx::Custom::Query;
15 15
 use DBIx::Custom::QueryBuilder;
16 16
 use DBIx::Custom::Where;
17
-use DBIx::Custom::Table;
17
+use DBIx::Custom::Model;
18 18
 use DBIx::Custom::Tag;
19 19
 use Encode qw/encode_utf8 decode_utf8/;
20 20
 
... ...
@@ -63,11 +63,15 @@ sub AUTOLOAD {
63 63
 
64 64
     # Method
65 65
     $self->{_methods} ||= {};
66
-    my $method = $self->{_methods}->{$mname};
67
-    return $self->$method(@_) if $method;
68
-    
69
-    # DBI method
70
-    return $self->dbh->$mname(@_);
66
+    if (my $method = $self->{_methods}->{$mname}) {
67
+        return $self->$method(@_)
68
+    }
69
+    elsif ($self->dbh->can($mname)) {
70
+        $self->dbh->$mname(@_);
71
+    }
72
+    else {
73
+        croak qq/Can't locate object method "$mname" via "$package"/
74
+    }
71 75
 }
72 76
 
73 77
 sub apply_filter {
... ...
@@ -586,52 +590,75 @@ sub select {
586 590
     return $result;
587 591
 }
588 592
 
589
-sub table {
590
-    my ($self, $name, $table) = @_;
593
+sub model {
594
+    my ($self, $name, $model) = @_;
591 595
     
592 596
     # Set
593
-    $self->{table} ||= {};
594
-    if ($table) {
595
-        $self->{table}{$name} = $table;
597
+    $self->{model} ||= {};
598
+    if ($model) {
599
+        $self->{model}{$name} = $model;
596 600
         return $self;
597 601
     }
598 602
     
599
-    # Check table existance
600
-    croak qq{Table "$name" is not included}
601
-      unless $self->{table}{$name};
603
+    # Check model existance
604
+    croak qq{Model "$name" is not included}
605
+      unless $self->{model}{$name};
602 606
     
603 607
     # Get
604
-    return $self->{table}{$name};
608
+    return $self->{model}{$name};
605 609
 }
606 610
 
607
-sub include_table {
608
-    my ($self, $name_space, $table_infos) = @_;
611
+sub include_model {
612
+    my ($self, $name_space, $model_infos) = @_;
613
+    
614
+    $name_space ||= '';
615
+    unless ($model_infos) {
616
+        # Load name space module
617
+        croak qq{"$name_space" is invalid class name}
618
+          if $name_space =~ /[^\w:]/;
619
+        eval "use $name_space";
620
+        croak qq{Name space module "$name_space.pm" is needed. $@} if $@;
621
+        
622
+        # Search model modules
623
+        my $path = $INC{"$name_space.pm"};
624
+        $path =~ s/\.pm$//;
625
+        opendir my $dh, $path
626
+          or croak qq{Can't open directory "$path": $!};
627
+        $model_infos = [];
628
+        while (my $module = readdir $dh) {
629
+            push @$model_infos, $module
630
+              if $module =~ s/\.pm$//;
631
+        }
632
+        
633
+        close $dh;
634
+    }
609 635
     
610
-    foreach my $table_info (@$table_infos) {
636
+    foreach my $model_info (@$model_infos) {
611 637
         
612
-        # Table name and class
613
-        my $table_name;
614
-        my $table_class;
615
-        if (ref $table_info eq 'HASH') {
616
-            $table_name = (keys %$table_info)[0];
617
-            $table_class = $table_info->{$table_name};
638
+        # Model name and class
639
+        my $model_name;
640
+        my $model_class;
641
+        if (ref $model_info eq 'HASH') {
642
+            $model_name = (keys %$model_info)[0];
643
+            $model_class = $model_info->{$model_name};
618 644
         }
619
-        else { $table_name = $table_class = $table_info }
620
-        my $tclass = "${name_space}::$table_class";
645
+        else { $model_name = $model_class = $model_info }
646
+        my $mclass = "${name_space}::$model_class";
621 647
         
622 648
         # Load
623
-        croak qq{"$tclass" is invalid class name}
624
-          if $tclass =~ /[^\w:]/;
625
-        unless ($tclass->can('isa')) {
626
-            eval "use $tclass";
649
+        croak qq{"$mclass" is invalid class name}
650
+          if $mclass =~ /[^\w:]/;
651
+        unless ($mclass->can('isa')) {
652
+            eval "use $mclass";
627 653
             croak $@ if $@;
628 654
         }
629 655
         
630 656
         # Instantiate
631
-        my $table = $tclass->new(dbi => $self, name => $table_name);
657
+        my $model = $mclass->new(dbi => $self);
658
+        $model->table($model_name) unless $model->table;
632 659
         
633 660
         # Set
634
-        $self->table($table_name, $table);
661
+        $self->model($model_name, $model);
635 662
     }
636 663
     return $self;
637 664
 }
... ...
@@ -1181,32 +1208,44 @@ You can do anything in callback.
1181 1208
 Callback receive four arguments, dbi object, table name,
1182 1209
 column name and columninformation.
1183 1210
 
1184
-=head2 C<(experimental) include_table>
1211
+=head2 C<(experimental) include_model>
1185 1212
 
1186
-    $dbi->include_table(
1187
-        'MyTable' => [
1213
+    $dbi->include_model(
1214
+        'MyModel' => [
1188 1215
             'book', 'person', 'company'
1189 1216
         ]
1190 1217
     );
1191 1218
 
1192
-Include tables. First argument is name space.
1219
+Include models. First argument is name space.
1193 1220
 Second argument is array reference of class base names.
1194 1221
 
1195
-The following table is instantiated and included.
1222
+If you don't specify second argument, All models under name space is
1223
+included.
1224
+
1225
+    $dbi->include_model('MyModel');
1226
+
1227
+Note that in this case name spece module is needed.
1196 1228
 
1197
-    MyTable::book
1198
-    MyTable::person
1199
-    MyTable::company
1229
+    # MyModel.pm
1230
+    package MyModel;
1231
+    
1232
+    use base 'DBIx::Custom::Model';
1233
+
1234
+The following model is instantiated and included.
1200 1235
 
1201
-You can get these instance by C<table()>.
1236
+    MyModel::book
1237
+    MyModel::person
1238
+    MyModel::company
1202 1239
 
1203
-    my $book_table = $dbi->table('book');
1240
+You can get these instance by C<model()>.
1204 1241
 
1205
-If you want to other name as table class,
1242
+    my $book_model = $dbi->model('book');
1243
+
1244
+If you want to other name as model class,
1206 1245
 you can do like this.
1207 1246
 
1208
-    $dbi->include_table(
1209
-        'MyTable' => [
1247
+    $dbi->include_model(
1248
+        'MyModel' => [
1210 1249
             {'book' => 'Book'},
1211 1250
             {'person' => 'Person'}
1212 1251
         ]
... ...
@@ -1341,17 +1380,16 @@ default to 0. This is experimental.
1341 1380
 This is overwrites C<default_bind_filter>.
1342 1381
 Return value of C<update()> is the count of affected rows.
1343 1382
 
1344
-=head2 C<(experimental) table>
1383
+=head2 C<(experimental) model>
1345 1384
 
1346
-    $dbi->table('book')->method(
1385
+    $dbi->model('book')->method(
1347 1386
         insert => sub { ... },
1348 1387
         update => sub { ... }
1349 1388
     );
1350 1389
     
1351
-    my $table = $dbi->table('book');
1390
+    my $model = $dbi->model('book');
1352 1391
 
1353
-Create a L<DBIx::Custom::Table> object,
1354
-or get a L<DBIx::Custom::Table> object.
1392
+Set and get a L<DBIx::Custom::Model> object,
1355 1393
 
1356 1394
 =head2 C<update_all>
1357 1395
 
+50 -31
lib/DBIx/Custom/Guide.pod
... ...
@@ -959,23 +959,23 @@ L<DBIx::Custom::Where> object is embedded into SQL.
959 959
 
960 960
     $dbi->execute($sql, param => $param);
961 961
 
962
-=head2 7. Table class
962
+=head2 7. Model
963 963
 
964
-=head3 Define table clas
964
+=head3 Model
965 965
 
966
-You can define table class extending L<DBIx::Custom::Table>
966
+you can define model extending L<DBIx::Custom::Model>
967 967
 to improve source code view.
968 968
 
969
-    package MyTable::book;
970
-    use base 'DBIx::Custom::Table';
969
+    package MyModel::book;
970
+    use base 'DBIx::Custom::Model';
971 971
     
972 972
     sub insert { ... }
973 973
     sub list { ... }
974 974
 
975
-You can include and instantiate this class.
975
+You can include and instantiate this class
976 976
 
977
-    $dbi->include_table(
978
-        MyTable => [
977
+    $dbi->include_model(
978
+        MyModel => [
979 979
             'book',
980 980
         ]
981 981
     );
... ...
@@ -983,38 +983,57 @@ You can include and instantiate this class.
983 983
 First argument is name space.
984 984
 Second argument is array reference of class base names.
985 985
 
986
-You can use this table like this.
986
+If you don't specify second argument, All models under name space is
987
+included.
987 988
 
988
-    my $result = $dbi->table('book')->list;
989
+    $dbi->include_model('MyModel');
989 990
 
990
-Table class is a little more useful than L<DBIx::Custom>,
991
-because you can use method C<insert()>, C<update()>, C<update_all()>,
992
-C<delete()>, C<delete_all()>, C<select()> without table name.
991
+Note that in this case name spece module is needed.
993 992
 
994
-    $dbi->table('book')->insert(param => $param);
993
+    # MyModel.pm
994
+    package MyModel;
995
+    
996
+    use base 'DBIx::Custom::Model';
997
+
998
+The follwoing modules location is needed.
999
+
1000
+    MyModel.pm
1001
+    MyModel / book.pm
1002
+            / company.pm
1003
+    
1004
+You can use model like this.
1005
+
1006
+    my $result = $dbi->model('book')->list;
1007
+
1008
+In mode, You can use such as methods,
1009
+C<insert()>, C<update()>, C<update_all()>,
1010
+C<delete()>, C<delete_all()>, C<select()>
1011
+without C<table> option.
1012
+
1013
+    $dbi->model('book')->insert(param => $param);
995 1014
 
996
-This table is L<DBIx::Custom::Table> object.
1015
+Model is L<DBIx::Custom::Model>.
997 1016
 
998
-If you need table name, you can get C<name()>.
1017
+If you need table name�Ayou can get it by C<table()>.
999 1018
 
1000
-    my $name = $table->name;
1019
+    my $table = $model->table;
1001 1020
 
1002
-You can get L<DBIx::Custom> object.
1021
+You can get L<DBIx::Custom>.
1003 1022
 
1004
-    my $dbi = $table->dbi;
1023
+    my $dbi = $model->dbi;
1005 1024
 
1006
-You can also call all methods of L<DBIx::Custom> and L<DBI>.
1025
+You can also call all methods of L<DBIx::Custom> and L<DBI>. 
1007 1026
 
1008 1027
     # DBIx::Custom method
1009
-    $table->execute($sql);
1028
+    $model->execute($sql);
1010 1029
     
1011 1030
     # DBI method
1012
-    $table->begin_work;
1013
-    $table->commit;
1031
+    $model->begin_work;
1032
+    $model->commit;
1014 1033
 
1015
-=head2 Table class example
1034
+=head2 Model Examples
1016 1035
 
1017
-Model example.
1036
+Model examples
1018 1037
 
1019 1038
     package MyDBI;
1020 1039
     
... ...
@@ -1023,22 +1042,22 @@ Model example.
1023 1042
     sub connect {
1024 1043
         my $self = shift->SUPER::connect(@_);
1025 1044
         
1026
-        $self->include_table(
1027
-            MyTable => [
1045
+        $self->include_model(
1046
+            MyModel => [
1028 1047
                 'book',
1029 1048
                 'company'
1030 1049
             ]
1031 1050
         );
1032 1051
     }
1033 1052
     
1034
-    package MyTable::book;
1035
-    use base 'DBIx::Custom::Table';
1053
+    package MyModel::book;
1054
+    use base 'DBIx::Custom::Model';
1036 1055
     
1037 1056
     sub insert { ... }
1038 1057
     sub list { ... }
1039 1058
     
1040
-    package MyTable::company;
1041
-    use base 'DBIx::Custom::Table';
1059
+    package MyModel::company;
1060
+    use base 'DBIx::Custom::Model';
1042 1061
     
1043 1062
     sub insert { ... }
1044 1063
     sub list { ... }
+46 -28
lib/DBIx/Custom/Guide/Ja.pod
... ...
@@ -986,23 +986,23 @@ C<execute()>との連携です。SQLを作成するときに埋め込むこと
986 986
 
987 987
     $dbi->execute($sql, param => $param);
988 988
 
989
-=head2 7. テーブルクラス
989
+=head2 7. モデル
990 990
 
991
-=head3 テーブルクラス
991
+=head3 モデル
992 992
 
993 993
 ソースコードの見通しをよくするために、
994
-L<DBIx::Custom::Table>を継承してテーブルクラスを作成することができます。
994
+L<DBIx::Custom::Model>を継承してモデルを作成することができます。
995 995
 
996
-    package MyTable::book;
997
-    use base 'DBIx::Custom::Table';
996
+    package MyModel::book;
997
+    use base 'DBIx::Custom::Model';
998 998
     
999 999
     sub insert { ... }
1000 1000
     sub list { ... }
1001 1001
 
1002 1002
 このクラスを取り込んで、インスタンス化することができます。
1003 1003
 
1004
-    $dbi->include_table(
1005
-        MyTable => [
1004
+    $dbi->include_model(
1005
+        MyModel => [
1006 1006
             'book',
1007 1007
         ]
1008 1008
     );
... ...
@@ -1010,40 +1010,58 @@ L<DBIx::Custom::Table>を継承してテーブルクラスを作成すること
1010 1010
 最初の引数は名前空間です。第二引数は、クラスの末尾の名前を含む
1011 1011
 配列のリファレンスです。
1012 1012
 
1013
-このテーブルは次のように利用することができます。
1013
+第二引数を指定しなかった場合は、名前空間以下にあるすべてのモデル
1014
+が取り込まれます。
1014 1015
 
1015
-    my $result = $dbi->table('book')->list;
1016
+    $dbi->include_model('MyModel');
1016 1017
 
1017
-テーブルクラスでは、テーブル名を指定することなしに
1018
+ただし、名前空間名そのものを表すモジュールが
1019
+存在していることが必要なことに注意してください。
1020
+
1021
+    # MyModel.pm
1022
+    package MyModel;
1023
+    
1024
+    use base 'DBIx::Custom::Model';
1025
+
1026
+次のようなモジュールの配置が必要です。
1027
+
1028
+    MyModel.pm
1029
+    MyModel / book.pm
1030
+            / company.pm
1031
+    
1032
+モデルは次のように利用することができます。
1033
+
1034
+    my $result = $dbi->model('book')->list;
1035
+
1036
+モデルではテーブル名を指定することなしに
1018 1037
 C<insert()>, C<update()>, C<update_all()>,
1019 1038
 C<delete()>, C<delete_all()>, C<select()>などのメソッドを
1020
-利用できるので
1021
-L<DBIx::Custom>よりも少し便利です。
1039
+利用できます。
1022 1040
 
1023
-    $dbi->table('book')->insert(param => $param);
1041
+    $dbi->model('book')->insert(param => $param);
1024 1042
 
1025
-テーブルクラスはL<DBIx::Custom::Table>です。
1043
+モデルはL<DBIx::Custom::Model>です。
1026 1044
 
1027
-必要であれば、C<name()>でテーブル名を取得することができます。
1045
+必要であれば、C<table()>でテーブル名を取得することができます。
1028 1046
 
1029
-    my $name = $table->name;
1047
+    my $table = $model->table;
1030 1048
 
1031 1049
 L<DBIx::Custom>オブジェクトを取得することもできます。
1032 1050
 
1033
-    my $dbi = $table->dbi;
1051
+    my $dbi = $model->dbi;
1034 1052
 
1035 1053
 L<DBIx::Custom>とL<DBI>のすべてのメソッドを呼び出すこともできます。
1036 1054
 
1037 1055
     # DBIx::Custom method
1038
-    $table->execute($sql);
1056
+    $model->execute($sql);
1039 1057
     
1040 1058
     # DBI method
1041
-    $table->begin_work;
1042
-    $table->commit;
1059
+    $model->begin_work;
1060
+    $model->commit;
1043 1061
 
1044
-=head2 テーブルクラスのサンプル
1062
+=head2 モデルのサンプル
1045 1063
 
1046
-テーブルクラスのサンプルです。
1064
+モデルのサンプルです。
1047 1065
 
1048 1066
     package MyDBI;
1049 1067
     
... ...
@@ -1052,22 +1070,22 @@ L<DBIx::Custom>とL<DBI>のすべてのメソッドを呼び出すこともで
1052 1070
     sub connect {
1053 1071
         my $self = shift->SUPER::connect(@_);
1054 1072
         
1055
-        $self->include_table(
1056
-            MyTable => [
1073
+        $self->include_model(
1074
+            MyModel => [
1057 1075
                 'book',
1058 1076
                 'company'
1059 1077
             ]
1060 1078
         );
1061 1079
     }
1062 1080
     
1063
-    package MyTable::book;
1064
-    use base 'DBIx::Custom::Table';
1081
+    package MyModel::book;
1082
+    use base 'DBIx::Custom::Model';
1065 1083
     
1066 1084
     sub insert { ... }
1067 1085
     sub list { ... }
1068 1086
     
1069
-    package MyTable::company;
1070
-    use base 'DBIx::Custom::Table';
1087
+    package MyModel::company;
1088
+    use base 'DBIx::Custom::Model';
1071 1089
     
1072 1090
     sub insert { ... }
1073 1091
     sub list { ... }
+13 -9
lib/DBIx/Custom/Table.pm → lib/DBIx/Custom/Model.pm
... ...
@@ -1,4 +1,4 @@
1
-package DBIx::Custom::Table;
1
+package DBIx::Custom::Model;
2 2
 
3 3
 use strict;
4 4
 use warnings;
... ...
@@ -10,7 +10,7 @@ use Carp 'croak';
10 10
 # Carp trust relationship
11 11
 push @DBIx::Custom::CARP_NOT, __PACKAGE__;
12 12
 
13
-__PACKAGE__->attr(['dbi', 'name']);
13
+__PACKAGE__->attr(['dbi', 'table']);
14 14
 
15 15
 our $AUTOLOAD;
16 16
 
... ...
@@ -22,14 +22,18 @@ sub AUTOLOAD {
22 22
 
23 23
     # Method
24 24
     $self->{_methods} ||= {};
25
-    
26
-    # Method
27 25
     if (my $method = $self->{_methods}->{$mname}) {
28 26
         return $self->$method(@_)
29 27
     }
30
-    
31
-    # DBI method
32
-    return $self->dbi->$mname(@_);
28
+    elsif ($self->dbi->can($mname)) {
29
+        $self->dbi->$mname(@_);
30
+    }
31
+    elsif ($self->dbi->dbh->can($mname)) {
32
+        $self->dbi->dbh->$mname(@_);
33
+    }
34
+    else {
35
+        croak qq/Can't locate object method "$mname" via "$package"/
36
+    }
33 37
 }
34 38
 
35 39
 sub method {
... ...
@@ -51,7 +55,7 @@ sub new {
51 55
         $self->method(
52 56
             $method => sub {
53 57
                 my $self = shift;
54
-                return $self->dbi->$method(table => $self->name, @_);
58
+                return $self->dbi->$method(table => $self->table, @_);
55 59
             }
56 60
         );
57 61
     }
... ...
@@ -71,7 +75,7 @@ DBIx::Custom::Table - Table base class(experimental)
71 75
 
72 76
 use DBIx::Custom::Table;
73 77
 
74
-my $table = DBIx::Custom::Table->new(name => 'books');
78
+my $table = DBIx::Custom::Model->new(table => 'books');
75 79
 
76 80
 =head1 METHODS
77 81
 
+48 -24
t/dbix-custom-core-sqlite.t
... ...
@@ -62,7 +62,7 @@ my $insert_query;
62 62
 my $update_query;
63 63
 my $ret_val;
64 64
 my $infos;
65
-my $table;
65
+my $model;
66 66
 my $where;
67 67
 
68 68
 # Prepare table
... ...
@@ -1265,20 +1265,20 @@ $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1265 1265
 $result = $dbi->select(selection => '* from table1', where => {key1 => 1});
1266 1266
 is_deeply($result->fetch_hash_all, [{key1 => 1, key2 => 2}]);
1267 1267
 
1268
-test 'Table class';
1268
+test 'Model class';
1269 1269
 use MyDBI1;
1270 1270
 $dbi = MyDBI1->connect($NEW_ARGS->{0});
1271 1271
 $dbi->execute("create table book (title, author)");
1272
-$table = $dbi->table('book');
1273
-$table->insert({title => 'a', author => 'b'});
1274
-is_deeply($table->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
1272
+$model = $dbi->model('book');
1273
+$model->insert({title => 'a', author => 'b'});
1274
+is_deeply($model->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
1275 1275
 $dbi->execute("create table company (name)");
1276
-$table = $dbi->table('company');
1277
-$table->insert({name => 'a'});
1278
-is_deeply($table->list->fetch_hash_all, [{name => 'a'}], 'basic');
1276
+$model = $dbi->model('company');
1277
+$model->insert({name => 'a'});
1278
+is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'basic');
1279 1279
 
1280
-$dbi->table('book');
1281
-eval{$dbi->table('book')->no_exists};
1280
+$dbi->model('book');
1281
+eval{$dbi->model('book')->no_exists};
1282 1282
 like($@, qr/locate/);
1283 1283
 
1284 1284
 {
... ...
@@ -1292,27 +1292,27 @@ like($@, qr/locate/);
1292 1292
     sub connect {
1293 1293
         my $self = shift->SUPER::connect(@_);
1294 1294
         
1295
-        $self->include_table(
1296
-            MyTable2 => [
1295
+        $self->include_model(
1296
+            MyModel2 => [
1297 1297
                 'book',
1298 1298
                 {company => 'Company'}
1299 1299
             ]
1300 1300
         );
1301 1301
     }
1302 1302
 
1303
-    package MyTable2::Base1;
1303
+    package MyModel2::Base1;
1304 1304
 
1305 1305
     use strict;
1306 1306
     use warnings;
1307 1307
 
1308
-    use base 'DBIx::Custom::Table';
1308
+    use base 'DBIx::Custom::Model';
1309 1309
 
1310
-    package MyTable2::book;
1310
+    package MyModel2::book;
1311 1311
 
1312 1312
     use strict;
1313 1313
     use warnings;
1314 1314
 
1315
-    use base 'MyTable2::Base1';
1315
+    use base 'MyModel2::Base1';
1316 1316
 
1317 1317
     sub insert {
1318 1318
         my ($self, $param) = @_;
... ...
@@ -1322,12 +1322,12 @@ like($@, qr/locate/);
1322 1322
 
1323 1323
     sub list { shift->select; }
1324 1324
 
1325
-    package MyTable2::Company;
1325
+    package MyModel2::Company;
1326 1326
 
1327 1327
     use strict;
1328 1328
     use warnings;
1329 1329
 
1330
-    use base 'MyTable2::Base1';
1330
+    use base 'MyModel2::Base1';
1331 1331
 
1332 1332
     sub insert {
1333 1333
         my ($self, $param) = @_;
... ...
@@ -1339,10 +1339,34 @@ like($@, qr/locate/);
1339 1339
 }
1340 1340
 $dbi = MyDBI4->connect($NEW_ARGS->{0});
1341 1341
 $dbi->execute("create table book (title, author)");
1342
-$table = $dbi->table('book');
1343
-$table->insert({title => 'a', author => 'b'});
1344
-is_deeply($table->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
1342
+$model = $dbi->model('book');
1343
+$model->insert({title => 'a', author => 'b'});
1344
+is_deeply($model->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
1345 1345
 $dbi->execute("create table company (name)");
1346
-$table = $dbi->table('company');
1347
-$table->insert({name => 'a'});
1348
-is_deeply($table->list->fetch_hash_all, [{name => 'a'}], 'basic');
1346
+$model = $dbi->model('company');
1347
+$model->insert({name => 'a'});
1348
+is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'basic');
1349
+
1350
+{
1351
+     package MyDBI5;
1352
+
1353
+    use strict;
1354
+    use warnings;
1355
+
1356
+    use base 'DBIx::Custom';
1357
+
1358
+    sub connect {
1359
+        my $self = shift->SUPER::connect(@_);
1360
+        
1361
+        $self->include_model('MyModel4');
1362
+    }
1363
+}
1364
+$dbi = MyDBI5->connect($NEW_ARGS->{0});
1365
+$dbi->execute("create table company (name)");
1366
+$model = $dbi->model('company');
1367
+$model->insert({name => 'a'});
1368
+is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
1369
+$model = $dbi->model('book');
1370
+is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
1371
+
1372
+
+2 -2
t/dbix-custom-core-sqlite/MyDBI1.pm
... ...
@@ -8,8 +8,8 @@ use base 'DBIx::Custom';
8 8
 sub connect {
9 9
     my $self = shift->SUPER::connect(@_);
10 10
     
11
-    $self->include_table(
12
-        MyTable1 => [
11
+    $self->include_model(
12
+        MyModel1 => [
13 13
             'book',
14 14
             {company => 'Company'}
15 15
         ]
+2 -2
t/dbix-custom-core-sqlite/MyTable1/Company.pm → t/dbix-custom-core-sqlite/MyModel1/Company.pm
... ...
@@ -1,9 +1,9 @@
1
-package MyTable1::Company;
1
+package MyModel1::Company;
2 2
 
3 3
 use strict;
4 4
 use warnings;
5 5
 
6
-use base 'DBIx::Custom::Table';
6
+use base 'DBIx::Custom::Model';
7 7
 
8 8
 
9 9
 sub insert {
+2 -2
t/dbix-custom-core-sqlite/MyTable1/book.pm → t/dbix-custom-core-sqlite/MyModel1/book.pm
... ...
@@ -1,9 +1,9 @@
1
-package MyTable1::book;
1
+package MyModel1::book;
2 2
 
3 3
 use strict;
4 4
 use warnings;
5 5
 
6
-use base 'DBIx::Custom::Table';
6
+use base 'DBIx::Custom::Model';
7 7
 
8 8
 sub insert {
9 9
     my ($self, $param) = @_;
+5
t/dbix-custom-core-sqlite/MyModel4.pm
... ...
@@ -0,0 +1,5 @@
1
+package MyModel4;
2
+
3
+use base 'DBIx::Custom::Model';
4
+
5
+1;
+9
t/dbix-custom-core-sqlite/MyModel4/book.pm
... ...
@@ -0,0 +1,9 @@
1
+package MyModel4::book;
2
+
3
+use base 'MyModel4';
4
+
5
+sub table { 'company' }
6
+
7
+sub list { shift->select }
8
+
9
+1;
+8
t/dbix-custom-core-sqlite/MyModel4/company.pm
... ...
@@ -0,0 +1,8 @@
1
+package MyModel4::company;
2
+
3
+use base 'MyModel4';
4
+
5
+sub insert { shift->SUPER::insert(param => $_[0]) }
6
+sub list { shift->select }
7
+
8
+1;