Showing 5 changed files with 48 additions and 6 deletions
+5 -3
Changes
... ...
@@ -1,7 +1,9 @@
1 1
 0.1648
2
-  add DBIx::Custom::Model columns attirbute
3
-  add DBIx::Custom::Model foreign_key() attribute 
4
-  add models() attribute
2
+  add experimental each_table() method
3
+  add experimental setup_model()
4
+  add experimental DBIx::Custom::Model columns attirbute
5
+  add experimental DBIx::Custom::Model foreign_key() attribute 
6
+  add experimental models() attribute
5 7
 0.1647
6 8
   add default_dbi_option()
7 9
 0.1646
+24 -3
lib/DBIx/Custom.pm
... ...
@@ -666,6 +666,20 @@ sub include_model {
666 666
     return $self;
667 667
 }
668 668
 
669
+sub setup_model {
670
+    my $self = shift;
671
+    
672
+    $self->each_column(
673
+        sub {
674
+            my ($self, $table, $column, $column_info) = @_;
675
+            
676
+            if (my $model = $self->models->{$table}) {
677
+                push @{$model->columns}, $column;
678
+            }
679
+        }
680
+    );
681
+}
682
+
669 683
 our %VALID_UPDATE_ARGS
670 684
   = map { $_ => 1 } qw/table param
671 685
                        where append filter allow_update_all query/;
... ...
@@ -1222,9 +1236,9 @@ Return value of C<insert()> is the count of affected rows.
1222 1236
 
1223 1237
     $dbi->each_column(
1224 1238
         sub {
1225
-            my ($self, $table, $column, $info) = @_;
1239
+            my ($self, $table, $column, $column_info) = @_;
1226 1240
             
1227
-            my $type = $info->{TYPE_NAME};
1241
+            my $type = $column_info->{TYPE_NAME};
1228 1242
             
1229 1243
             if ($type eq 'DATE') {
1230 1244
                 # ...
... ...
@@ -1235,7 +1249,7 @@ Get column informations from database.
1235 1249
 Argument is callback.
1236 1250
 You can do anything in callback.
1237 1251
 Callback receive four arguments, dbi object, table name,
1238
-column name and columninformation.
1252
+column name and column information.
1239 1253
 
1240 1254
 =head2 C<(experimental) include_model>
1241 1255
 
... ...
@@ -1420,6 +1434,13 @@ Return value of C<update()> is the count of affected rows.
1420 1434
 
1421 1435
 Set and get a L<DBIx::Custom::Model> object,
1422 1436
 
1437
+=head2 C<(experimental) setup_model>
1438
+
1439
+    $dbi->setup_model;
1440
+
1441
+Setup all model objects.
1442
+C<columns> and C<primary_key> is automatically set.
1443
+
1423 1444
 =head2 C<update_all>
1424 1445
 
1425 1446
     $dbi->update_all(table  => $table, 
+5
lib/DBIx/Custom/Guide.pod
... ...
@@ -1046,6 +1046,11 @@ You can set column names
1046 1046
 
1047 1047
     $model->columns(['id', 'number_id']);
1048 1048
 
1049
+Column names is automarically set by C<setup_model()>.
1050
+This method is needed to be call after C<include_model()>.
1051
+
1052
+    $dbi->setup_model;
1053
+
1049 1054
 =head2 Model Examples
1050 1055
 
1051 1056
 Model examples
+5
lib/DBIx/Custom/Guide/Ja.pod
... ...
@@ -1074,6 +1074,11 @@ C<select_at()>で利用されます。
1074 1074
 
1075 1075
     $model->columns(['id', 'number_id']);
1076 1076
 
1077
+列名はC<setup_model()>で自動的に設定することができます。
1078
+このメソッドはC<include_model()>の後で呼び出してください。
1079
+
1080
+    $dbi->setup_model;
1081
+
1077 1082
 =head2 モデルのサンプル
1078 1083
 
1079 1084
 モデルのサンプルです。
+9
t/dbix-custom-core-sqlite.t
... ...
@@ -1385,3 +1385,12 @@ $model = $dbi->model('book');
1385 1385
 $model->columns(['id', 'number']);
1386 1386
 is_deeply($model->columns, ['id', 'number']);
1387 1387
 
1388
+test 'setup_model';
1389
+use MyDBI1;
1390
+$dbi = MyDBI1->connect($NEW_ARGS->{0});
1391
+$dbi->execute('create table book (id)');
1392
+$dbi->execute('create table company (id, name);');
1393
+$dbi->execute('create table test (id, name, primary key (id, name));');
1394
+$dbi->setup_model;
1395
+is_deeply($dbi->model('book')->columns, ['id']);
1396
+is_deeply($dbi->model('company')->columns, ['id', 'name']);