... | ... |
@@ -1,260 +1,262 @@ |
1 |
+0.1649 |
|
2 |
+ - DBIx::Custom::Model select() think about relation attirbute |
|
1 | 3 |
0.1648 |
2 |
- add experimental DBIx::Custom::Model relation() attribute |
|
3 |
- add experimental update_at(), delete_at(), select_at() |
|
4 |
- add experimental setup_model() |
|
5 |
- add experimental DBIx::Custom::Model columns attirbute |
|
6 |
- add experimental DBIx::Custom::Model foreign_key() attribute |
|
7 |
- add experimental models() attribute |
|
4 |
+ - add experimental DBIx::Custom::Model relation() attribute |
|
5 |
+ - add experimental update_at(), delete_at(), select_at() |
|
6 |
+ - add experimental setup_model() |
|
7 |
+ - add experimental DBIx::Custom::Model columns attirbute |
|
8 |
+ - add experimental DBIx::Custom::Model foreign_key() attribute |
|
9 |
+ - add experimental models() attribute |
|
8 | 10 |
0.1647 |
9 |
- add default_dbi_option() |
|
11 |
+ - add default_dbi_option() |
|
10 | 12 |
0.1646 |
11 |
- add feture. all model class in namespace is included by include_model |
|
12 |
- rename experimental include_table to include_model |
|
13 |
- rename experimental table to model |
|
14 |
- rename experimental DBIx::Custom::Table to DBIx::Custom::Model |
|
15 |
- remame experimental DBIx::Custom::Table::name() to DBIx::Custom::Model::table(); |
|
13 |
+ - add feture. all model class in namespace is included by include_model |
|
14 |
+ - rename experimental include_table to include_model |
|
15 |
+ - rename experimental table to model |
|
16 |
+ - rename experimental DBIx::Custom::Table to DBIx::Custom::Model |
|
17 |
+ - remame experimental DBIx::Custom::Table::name() to DBIx::Custom::Model::table(); |
|
16 | 18 |
0.1645 |
17 |
- removed experimental base_table() for class expandability. |
|
18 |
- experimental table() can't set table object any more. |
|
19 |
- added experimental include_table(). |
|
19 |
+ - removed experimental base_table() for class expandability. |
|
20 |
+ - experimental table() can't set table object any more. |
|
21 |
+ - added experimental include_table(). |
|
20 | 22 |
0.1644 |
21 |
- update pod |
|
23 |
+ - update pod |
|
22 | 24 |
0.1643 |
23 |
- add experimental selection option to select() |
|
24 |
- add experimental table tag |
|
25 |
- fix bug : filter can't overwirite undef value. |
|
26 |
- add experimental feature to apply_filter(). you can apply end filter. |
|
27 |
- add experimental feature to apply_filter(). TABLE__COLUMN is filterded now. |
|
25 |
+ - add experimental selection option to select() |
|
26 |
+ - add experimental table tag |
|
27 |
+ - fix bug : filter can't overwirite undef value. |
|
28 |
+ - add experimental feature to apply_filter(). you can apply end filter. |
|
29 |
+ - add experimental feature to apply_filter(). TABLE__COLUMN is filterded now. |
|
28 | 30 |
0.1642 |
29 |
- removed experimental DBIx::Custom::Table base() method |
|
30 |
- table created by tabled method can call base_$method correponding to base_table's one |
|
31 |
+ - removed experimental DBIx::Custom::Table base() method |
|
32 |
+ - table created by tabled method can call base_$method correponding to base_table's one |
|
31 | 33 |
0.1641 |
32 |
- select() where can't receive array reference to prevend SQL injection easily(not backward compatible. sorry. use where() instead) |
|
33 |
- added experimental safety_column_name attribute |
|
34 |
- fix SQL injection security hole about column name |
|
34 |
+ - select() where can't receive array reference to prevend SQL injection easily(not backward compatible. sorry. use where() instead) |
|
35 |
+ - added experimental safety_column_name attribute |
|
36 |
+ - fix SQL injection security hole about column name |
|
35 | 37 |
0.1640 |
36 |
- autoload DBI method |
|
37 |
- removed experimental expand |
|
38 |
+ - autoload DBI method |
|
39 |
+ - removed experimental expand |
|
38 | 40 |
0.1639 |
39 |
- improved delete() and update() where option. you can use DBIx::Custom::Where object |
|
40 |
- added experimental not_exists() |
|
41 |
+ - improved delete() and update() where option. you can use DBIx::Custom::Where object |
|
42 |
+ - added experimental not_exists() |
|
41 | 43 |
0.1638 |
42 |
- table object call dbi object method if not found method. |
|
43 |
- added experimental base_table attribute and removed experimental table_class attribute |
|
44 |
- renamed helper to method. |
|
45 |
- added experimental DBIx::Custom::Result::stash() |
|
46 |
- renamed experimental DBIx::Custom::Table helper to method |
|
44 |
+ - table object call dbi object method if not found method. |
|
45 |
+ - added experimental base_table attribute and removed experimental table_class attribute |
|
46 |
+ - renamed helper to method. |
|
47 |
+ - added experimental DBIx::Custom::Result::stash() |
|
48 |
+ - renamed experimental DBIx::Custom::Table helper to method |
|
47 | 49 |
0.1637 |
48 |
- renamed dbi_options to dbi_option. dbi_options is available, but deprecated. |
|
49 |
- renamed DBIx::Custom::TagProcessor to DBIx::Custom::Tag, and function names is cleanuped. |
|
50 |
- renamed register_tag_processor to register_tag. register_tag_processor is available, but deprecated. |
|
51 |
- renamed tag_processors to tags. tag_prosessors is available, but deprecated. |
|
52 |
- improved error message |
|
53 |
- build all clause if param is undefined. |
|
54 |
- each_column callback receive self as first argument. |
|
55 |
- removed experimental txn_scope |
|
50 |
+ - renamed dbi_options to dbi_option. dbi_options is available, but deprecated. |
|
51 |
+ - renamed DBIx::Custom::TagProcessor to DBIx::Custom::Tag, and function names is cleanuped. |
|
52 |
+ - renamed register_tag_processor to register_tag. register_tag_processor is available, but deprecated. |
|
53 |
+ - renamed tag_processors to tags. tag_prosessors is available, but deprecated. |
|
54 |
+ - improved error message |
|
55 |
+ - build all clause if param is undefined. |
|
56 |
+ - each_column callback receive self as first argument. |
|
57 |
+ - removed experimental txn_scope |
|
56 | 58 |
0.1636 |
57 |
- added tests and cleanup |
|
59 |
+ - added tests and cleanup |
|
58 | 60 |
0.1635 |
59 |
- renamed iterate_all_columns to each_column |
|
61 |
+ - renamed iterate_all_columns to each_column |
|
60 | 62 |
0.1634 |
61 |
- became more useful where method |
|
62 |
- changed DBIx::Custom::Where greatly |
|
63 |
+ - became more useful where method |
|
64 |
+ - changed DBIx::Custom::Where greatly |
|
63 | 65 |
0.1633 |
64 |
- fixed test |
|
66 |
+ - fixed test |
|
65 | 67 |
0.1632 |
66 |
- added experimental where method |
|
67 |
- added experimental DBIx::Custom::Where. |
|
68 |
- removed DBIx::Custom::Or |
|
68 |
+ - added experimental where method |
|
69 |
+ - added experimental DBIx::Custom::Where. |
|
70 |
+ - removed DBIx::Custom::Or |
|
69 | 71 |
0.1631 |
70 |
- added experimental DBIx::Custom::Result end_filter method |
|
71 |
- experimental extended select method's where option |
|
72 |
- fix select method empty where failed bug |
|
73 |
- added experimental suger method query option |
|
74 |
- added experimental or method |
|
72 |
+ - added experimental DBIx::Custom::Result end_filter method |
|
73 |
+ - experimental extended select method's where option |
|
74 |
+ - fix select method empty where failed bug |
|
75 |
+ - added experimental suger method query option |
|
76 |
+ - added experimental or method |
|
75 | 77 |
0.1630 |
76 |
- fix test bug |
|
78 |
+ - fix test bug |
|
77 | 79 |
0.1629 |
78 |
- renamed auto_filter to apply_filter |
|
79 |
- changed apply_filter method arguments |
|
80 |
- deprecated cache_method |
|
80 |
+ - renamed auto_filter to apply_filter |
|
81 |
+ - changed apply_filter method arguments |
|
82 |
+ - deprecated cache_method |
|
81 | 83 |
0.1628 |
82 |
- remove DBIx::Custom::Model |
|
83 |
- move table method and table_class attribute to DBIx::Custom |
|
84 |
- added examples |
|
85 |
- fixed connect method bug |
|
84 |
+ - remove DBIx::Custom::Model |
|
85 |
+ - move table method and table_class attribute to DBIx::Custom |
|
86 |
+ - added examples |
|
87 |
+ - fixed connect method bug |
|
86 | 88 |
0.1627 |
87 |
- added insert, update, update_all, delete, delete_all, select method to DBIx::Custom::Table |
|
88 |
- added experimental txn_scope |
|
89 |
+ - added insert, update, update_all, delete, delete_all, select method to DBIx::Custom::Table |
|
90 |
+ - added experimental txn_scope |
|
89 | 91 |
0.1626 |
90 |
- simplified DBIx::Custom::Model and DBIx::Custom::Table |
|
92 |
+ - simplified DBIx::Custom::Model and DBIx::Custom::Table |
|
91 | 93 |
0.1625 |
92 |
- added experimental DBIx::Custom::Model and DBIx::Custom::Table |
|
94 |
+ - added experimental DBIx::Custom::Model and DBIx::Custom::Table |
|
93 | 95 |
0.1624 |
94 |
- added experimental iterate_all_columns method. |
|
96 |
+ - added experimental iterate_all_columns method. |
|
95 | 97 |
0.1623 |
96 |
- added experimental auto_filter method |
|
97 |
- deprecated default_bind_filter and default_fetch_filter because these are global effect. |
|
98 |
- changed defautl_bind_filter and default_fetch_filter attributes to methods. |
|
99 |
- changed DBIx::Custom::Result default_filter attribute to method |
|
100 |
- changed DBIx::Custom::Result filter attribute to method. |
|
101 |
- filter_check is always done for usability |
|
98 |
+ - added experimental auto_filter method |
|
99 |
+ - deprecated default_bind_filter and default_fetch_filter because these are global effect. |
|
100 |
+ - changed defautl_bind_filter and default_fetch_filter attributes to methods. |
|
101 |
+ - changed DBIx::Custom::Result default_filter attribute to method |
|
102 |
+ - changed DBIx::Custom::Result filter attribute to method. |
|
103 |
+ - filter_check is always done for usability |
|
102 | 104 |
0.1622 |
103 |
- deprecated DBIx::Custom::SQLite and DBIx::Custom::MySQL |
|
104 |
- added dbi_options attribute |
|
105 |
- checked attributes passed to connect method |
|
105 |
+ - deprecated DBIx::Custom::SQLite and DBIx::Custom::MySQL |
|
106 |
+ - added dbi_options attribute |
|
107 |
+ - checked attributes passed to connect method |
|
106 | 108 |
0.1621 |
107 |
- cleanup (removed undocumented features) |
|
109 |
+ - cleanup (removed undocumented features) |
|
108 | 110 |
0.1620 |
109 |
- updated document |
|
111 |
+ - updated document |
|
110 | 112 |
0.1619 |
111 |
- updated document |
|
112 |
- added experimental expand method |
|
113 |
+ - updated document |
|
114 |
+ - added experimental expand method |
|
113 | 115 |
0.1618 |
114 |
- added helper method |
|
115 |
- added begin_work, commit, and rollback method |
|
116 |
+ - added helper method |
|
117 |
+ - added begin_work, commit, and rollback method |
|
116 | 118 |
0.1617 |
117 |
- L<DBIx::Custom> is now stable. APIs keep backword compatible in the feature. |
|
119 |
+ - L<DBIx::Custom> is now stable. APIs keep backword compatible in the feature. |
|
118 | 120 |
0.1616 |
119 |
- removed experimental register_method(), and methods attribute, because it is too magical |
|
121 |
+ - removed experimental register_method(), and methods attribute, because it is too magical |
|
120 | 122 |
0.1615 |
121 |
- fixed DBIx::Custom::QueryBuilder build_query() bug |
|
122 |
- required Perl 5.008001 to use @CARP_NOT |
|
123 |
+ - fixed DBIx::Custom::QueryBuilder build_query() bug |
|
124 |
+ - required Perl 5.008001 to use @CARP_NOT |
|
123 | 125 |
0.1614 |
124 |
- removed DBIx::Custom::Query start_tag and end tag attributes |
|
125 |
- enable escaping '{' and '}' in the source of SQL |
|
126 |
- fixed Carp Carp trust relationship |
|
126 |
+ - removed DBIx::Custom::Query start_tag and end tag attributes |
|
127 |
+ - enable escaping '{' and '}' in the source of SQL |
|
128 |
+ - fixed Carp Carp trust relationship |
|
127 | 129 |
0.1613 |
128 |
- added experimental register_method() method |
|
129 |
- added experimental methods attribute |
|
130 |
+ - added experimental register_method() method |
|
131 |
+ - added experimental methods attribute |
|
130 | 132 |
0.1612 |
131 |
- added tests |
|
132 |
- updated document |
|
133 |
- removed DBIx::Custom::SQLite last_insert_rawid() mehtod(not backword compatible) |
|
134 |
- removed DBIx::Custom::MySQL last_insert_id() method(not backword compatible) |
|
133 |
+ - added tests |
|
134 |
+ - updated document |
|
135 |
+ - removed DBIx::Custom::SQLite last_insert_rawid() mehtod(not backword compatible) |
|
136 |
+ - removed DBIx::Custom::MySQL last_insert_id() method(not backword compatible) |
|
135 | 137 |
0.1611 |
136 |
- renamed update tag to update_param |
|
137 |
- renamed insert tag to insert_param |
|
138 |
- renamed sql_builder to query_builder |
|
138 |
+ - renamed update tag to update_param |
|
139 |
+ - renamed insert tag to insert_param |
|
140 |
+ - renamed sql_builder to query_builder |
|
139 | 141 |
0.1610 |
140 |
- added filter_check attribute. |
|
142 |
+ - added filter_check attribute. |
|
141 | 143 |
0.1609 |
142 |
- updated document. |
|
144 |
+ - updated document. |
|
143 | 145 |
0.1608 |
144 |
- update document |
|
145 |
- renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible) |
|
146 |
+ - update document |
|
147 |
+ - renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible) |
|
146 | 148 |
0.1607 |
147 |
- where argument of select() method can specify array(string, paramters) |
|
148 |
- renamed build_query() to create_query()(not backword compatible) |
|
149 |
+ - where argument of select() method can specify array(string, paramters) |
|
150 |
+ - renamed build_query() to create_query()(not backword compatible) |
|
149 | 151 |
0.1606 |
150 |
- fix testing bug |
|
152 |
+ - fix testing bug |
|
151 | 153 |
0.1605 |
152 |
- remove DBIx::Custom::QueryBuilder::tag_syntax() (not backword compatible) |
|
153 |
- renamed DBIx::Custom::TagProcessor to DBIx::Custom::TagProcessors (not backword compatible) |
|
154 |
- changed arguments of tag processor(not backword compatible) |
|
155 |
- renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible) |
|
154 |
+ - remove DBIx::Custom::QueryBuilder::tag_syntax() (not backword compatible) |
|
155 |
+ - renamed DBIx::Custom::TagProcessor to DBIx::Custom::TagProcessors (not backword compatible) |
|
156 |
+ - changed arguments of tag processor(not backword compatible) |
|
157 |
+ - renamed DBIx::Custom::QueryBuilder::TagProcessors functions(not backword compatible) |
|
156 | 158 |
0.1604 |
157 |
- changed argument of tag processor(not backword compatible) |
|
158 |
- renamed default_query_filter to default_bind_filter(not backword compatible) |
|
159 |
- renamed DBIx::Custom::SQLTemplate to DBIx::Custom::SQLBuilder(not backword compatible) |
|
160 |
- renamed create_query to build_query(not backword compatible) |
|
161 |
- renamed sql_template to sql_builder(not backword compatible) |
|
162 |
- removed DESTROY method(not backword compatible) |
|
163 |
- removed disconnect method(not backword compatible) |
|
164 |
- fixed DBIx::Custom::MySQL connect_memory |
|
159 |
+ - changed argument of tag processor(not backword compatible) |
|
160 |
+ - renamed default_query_filter to default_bind_filter(not backword compatible) |
|
161 |
+ - renamed DBIx::Custom::SQLTemplate to DBIx::Custom::SQLBuilder(not backword compatible) |
|
162 |
+ - renamed create_query to build_query(not backword compatible) |
|
163 |
+ - renamed sql_template to sql_builder(not backword compatible) |
|
164 |
+ - removed DESTROY method(not backword compatible) |
|
165 |
+ - removed disconnect method(not backword compatible) |
|
166 |
+ - fixed DBIx::Custom::MySQL connect_memory |
|
165 | 167 |
0.1603 |
166 |
- removed DBIx::Custom commit method (not backword compatible) |
|
167 |
- removed DBIx::Custom rollback method (not backword compatible) |
|
168 |
- removed DBIx::Custom auto_commit method (not backword compatible) |
|
168 |
+ - removed DBIx::Custom commit method (not backword compatible) |
|
169 |
+ - removed DBIx::Custom rollback method (not backword compatible) |
|
170 |
+ - removed DBIx::Custom auto_commit method (not backword compatible) |
|
169 | 171 |
0.1602 |
170 |
- added cache_method attribute |
|
172 |
+ - added cache_method attribute |
|
171 | 173 |
0.1601 |
172 |
- added cache attribute |
|
173 |
- select, insert, update, update_all, delete, delete_all, execute only receive hash argument(not backword compatible) |
|
174 |
+ - added cache attribute |
|
175 |
+ - select, insert, update, update_all, delete, delete_all, execute only receive hash argument(not backword compatible) |
|
174 | 176 |
0.1503 |
175 |
- removed reconnect method |
|
176 |
- removed connected method |
|
177 |
- removed reconnect_memroy method |
|
178 |
- renamed fetch_single to fetch_first |
|
179 |
- renamed fetch_hash_single to fetch_hash_first |
|
180 |
- updated document |
|
177 |
+ - removed reconnect method |
|
178 |
+ - removed connected method |
|
179 |
+ - removed reconnect_memroy method |
|
180 |
+ - renamed fetch_single to fetch_first |
|
181 |
+ - renamed fetch_hash_single to fetch_hash_first |
|
182 |
+ - updated document |
|
181 | 183 |
0.1502 |
182 |
- added commit method |
|
183 |
- added rollback method |
|
184 |
- changed select argument, added relation option |
|
185 |
- moved host attribute to DBIx::Custom::MySQL |
|
186 |
- moved port attribute to DBIx::Custom::MySQL |
|
187 |
- moved database attribute to DBIx::Custom::MySQL and DBIx::Custom::SQLite |
|
184 |
+ - added commit method |
|
185 |
+ - added rollback method |
|
186 |
+ - changed select argument, added relation option |
|
187 |
+ - moved host attribute to DBIx::Custom::MySQL |
|
188 |
+ - moved port attribute to DBIx::Custom::MySQL |
|
189 |
+ - moved database attribute to DBIx::Custom::MySQL and DBIx::Custom::SQLite |
|
188 | 190 |
0.1501 |
189 |
- removed register_format() |
|
190 |
- removed formats() |
|
191 |
- removed run_transaction() |
|
192 |
- removed create_table() |
|
193 |
- removed drop_table() |
|
194 |
- changed select() arguments |
|
195 |
- changed insert() arguments |
|
196 |
- changed update() arguments |
|
197 |
- changed update_all() arguments |
|
198 |
- changed delete() arguments |
|
199 |
- changed delete_all() arguments |
|
200 |
- changed execute() arguments |
|
191 |
+ - removed register_format() |
|
192 |
+ - removed formats() |
|
193 |
+ - removed run_transaction() |
|
194 |
+ - removed create_table() |
|
195 |
+ - removed drop_table() |
|
196 |
+ - changed select() arguments |
|
197 |
+ - changed insert() arguments |
|
198 |
+ - changed update() arguments |
|
199 |
+ - changed update_all() arguments |
|
200 |
+ - changed delete() arguments |
|
201 |
+ - changed delete_all() arguments |
|
202 |
+ - changed execute() arguments |
|
201 | 203 |
0.1402 |
202 |
- remove finish(), error() |
|
203 |
- can receive code ref to filter() |
|
204 |
- renamed resist to register |
|
204 |
+ - remove finish(), error() |
|
205 |
+ - can receive code ref to filter() |
|
206 |
+ - renamed resist to register |
|
205 | 207 |
0.1401 |
206 |
- renamed fetch_rows to fetch_multi |
|
207 |
- renamed fetch_hash_rows to fetch_hash_multi |
|
208 |
+ - renamed fetch_rows to fetch_multi |
|
209 |
+ - renamed fetch_hash_rows to fetch_hash_multi |
|
208 | 210 |
0.1301 |
209 |
- Changed many(not backword compatible) |
|
211 |
+ - Changed many(not backword compatible) |
|
210 | 212 |
0.1201 |
211 |
- Changed many(not backword compatible) |
|
213 |
+ - Changed many(not backword compatible) |
|
212 | 214 |
0.1101 |
213 |
- rename DBIx::Custom::SQLite last_insert_id to last_insert_rowid |
|
215 |
+ - rename DBIx::Custom::SQLite last_insert_id to last_insert_rowid |
|
214 | 216 |
0.1001 |
215 |
- remove run_transaction(). |
|
216 |
- add transaction() and DBIx::Custom::Transaction |
|
217 |
- rename fetch_first to fetch_single |
|
218 |
- rename fetch_hash_first to fetch_hash_single |
|
217 |
+ - remove run_transaction(). |
|
218 |
+ - add transaction() and DBIx::Custom::Transaction |
|
219 |
+ - rename fetch_first to fetch_single |
|
220 |
+ - rename fetch_hash_first to fetch_hash_single |
|
219 | 221 |
0.0906 |
220 |
- fix some bug |
|
222 |
+ - fix some bug |
|
221 | 223 |
0.0905 |
222 |
- catch up with Object::Simple update |
|
224 |
+ - catch up with Object::Simple update |
|
223 | 225 |
0.0904 |
224 |
- cleanup |
|
226 |
+ - cleanup |
|
225 | 227 |
0.0903 |
226 |
- catch up with Object::Simple update |
|
228 |
+ - catch up with Object::Simple update |
|
227 | 229 |
0.0902 |
228 |
- cleanup |
|
230 |
+ - cleanup |
|
229 | 231 |
0.0901 |
230 |
- DBIx::Basic filter 'encode_utf8' utf8::upgrade process is deleted |
|
232 |
+ - DBIx::Basic filter 'encode_utf8' utf8::upgrade process is deleted |
|
231 | 233 |
0.0801 |
232 |
- add 'create_table', 'drop_table' methods |
|
234 |
+ - add 'create_table', 'drop_table' methods |
|
233 | 235 |
0.0701 |
234 |
- rename sql_template to sql_tmpl (not backword compatible) |
|
235 |
- rename dbi_options to options (not backword compatible) |
|
236 |
+ - rename sql_template to sql_tmpl (not backword compatible) |
|
237 |
+ - rename dbi_options to options (not backword compatible) |
|
236 | 238 |
0.0605 |
237 |
- fix encode_utf8 filter |
|
239 |
+ - fix encode_utf8 filter |
|
238 | 240 |
0.0604 |
239 |
- fix timeformat tests |
|
241 |
+ - fix timeformat tests |
|
240 | 242 |
0.0603 |
241 |
- fix cache system bug |
|
243 |
+ - fix cache system bug |
|
242 | 244 |
0.0602 |
243 |
- update document |
|
245 |
+ - update document |
|
244 | 246 |
0.0601 |
245 |
- bind_filter argument is changed to ($value, $key, $dbi, $infos) (not backword compatible) |
|
246 |
- fetch_filter argument is changed to ($value, $key, $dbi, $infos) (not backword compatible) |
|
247 |
- run_transaction argument is changed to ($dbi) |
|
247 |
+ - bind_filter argument is changed to ($value, $key, $dbi, $infos) (not backword compatible) |
|
248 |
+ - fetch_filter argument is changed to ($value, $key, $dbi, $infos) (not backword compatible) |
|
249 |
+ - run_transaction argument is changed to ($dbi) |
|
248 | 250 |
0.0502 |
249 |
- update document |
|
251 |
+ - update document |
|
250 | 252 |
0.0501 |
251 |
- packaging DBIx::Custom::Result DBIx::Custom::Query DBIx::Custom::MySQL DBIx::Custom::SQLite DBIx::Custom::SQL::Template |
|
253 |
+ - packaging DBIx::Custom::Result DBIx::Custom::Query DBIx::Custom::MySQL DBIx::Custom::SQLite DBIx::Custom::SQL::Template |
|
252 | 254 |
0.0401 |
253 |
- catch up with DBIx::Custom::Result version up |
|
255 |
+ - catch up with DBIx::Custom::Result version up |
|
254 | 256 |
0.0301 |
255 |
- exchange filter argument 'key', 'value' (not backword compatible) |
|
257 |
+ - exchange filter argument 'key', 'value' (not backword compatible) |
|
256 | 258 |
0.0201 |
257 |
- rename tranzaction to transaction |
|
258 |
- add filter_off |
|
259 |
+ - rename tranzaction to transaction |
|
260 |
+ - add filter_off |
|
259 | 261 |
0.0101 |
260 |
- First release |
|
262 |
+ - First release |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
package DBIx::Custom; |
2 | 2 |
|
3 |
-our $VERSION = '0.1648'; |
|
3 |
+our $VERSION = '0.1649'; |
|
4 | 4 |
|
5 | 5 |
use 5.008001; |
6 | 6 |
use strict; |
... | ... |
@@ -552,12 +552,12 @@ sub select { |
552 | 552 |
my $columns = $args{column} || []; |
553 | 553 |
my $selection = $args{selection} || ''; |
554 | 554 |
my $where = $args{where} || {}; |
555 |
- my $relation = $args{relation}; |
|
555 |
+ my $relation = $args{relation} || {}; |
|
556 | 556 |
my $append = $args{append}; |
557 | 557 |
my $filter = $args{filter}; |
558 | 558 |
|
559 |
- # Relation table |
|
560 |
- if (!$selection && $relation) { |
|
559 |
+ # Relation |
|
560 |
+ if (!$selection && keys %$relation) { |
|
561 | 561 |
foreach my $rcolumn (keys %$relation) { |
562 | 562 |
my $table1 = (split (/\./, $rcolumn))[0]; |
563 | 563 |
my $table2 = (split (/\./, $relation->{$rcolumn}))[0]; |
... | ... |
@@ -568,8 +568,8 @@ sub select { |
568 | 568 |
$table1_exists = 1 if $table eq $table1; |
569 | 569 |
$table2_exists = 1 if $table eq $table2; |
570 | 570 |
} |
571 |
- push @$tables, $table1 unless $table1_exists; |
|
572 |
- push @$tables, $table2 unless $table2_exists; |
|
571 |
+ unshift @$tables, $table1 unless $table1_exists; |
|
572 |
+ unshift @$tables, $table2 unless $table2_exists; |
|
573 | 573 |
} |
574 | 574 |
} |
575 | 575 |
|
... | ... |
@@ -624,7 +624,7 @@ sub select { |
624 | 624 |
push @sql, $swhere; |
625 | 625 |
|
626 | 626 |
# Relation |
627 |
- if (!$selection && $relation) { |
|
627 |
+ if (!$selection && keys %$relation) { |
|
628 | 628 |
push @sql, $swhere eq '' ? 'where' : 'and'; |
629 | 629 |
foreach my $rcolumn (keys %$relation) { |
630 | 630 |
my $table1 = (split (/\./, $rcolumn))[0]; |
... | ... |
@@ -671,6 +671,10 @@ sub select_at { |
671 | 671 |
my $primary_keys = delete $args{primary_key}; |
672 | 672 |
$primary_keys = [$primary_keys] unless ref $primary_keys; |
673 | 673 |
|
674 |
+ # Table |
|
675 |
+ croak qq{"table" option must be specified} unless $args{table}; |
|
676 |
+ my $table = ref $args{table} ? $args{table}->[-1] : $args{table}; |
|
677 |
+ |
|
674 | 678 |
# Where clause |
675 | 679 |
my $where = {}; |
676 | 680 |
if (exists $args{where}) { |
... | ... |
@@ -678,7 +682,7 @@ sub select_at { |
678 | 682 |
$where_columns = [$where_columns] unless ref $where_columns; |
679 | 683 |
|
680 | 684 |
for(my $i = 0; $i < @$primary_keys; $i ++) { |
681 |
- $where->{$primary_keys->[$i]} = $where_columns->[$i]; |
|
685 |
+ $where->{$table . '.' . $primary_keys->[$i]} = $where_columns->[$i]; |
|
682 | 686 |
} |
683 | 687 |
} |
684 | 688 |
elsif (exists $args{param}) { |
... | ... |
@@ -313,7 +313,7 @@ Following SQL is executed. |
313 | 313 |
Next example. |
314 | 314 |
|
315 | 315 |
my $result = $dbi->select( |
316 |
- table => ['book', 'rental'], |
|
316 |
+ table => 'book', |
|
317 | 317 |
where => {'book.name' => 'Perl'}, |
318 | 318 |
relation => {'book.id' => 'rental.book_id'} |
319 | 319 |
); |
... | ... |
@@ -317,7 +317,7 @@ C<column>は列名、C<where>は条件です。 |
317 | 317 |
次のサンプルです。 |
318 | 318 |
|
319 | 319 |
my $result = $dbi->select( |
320 |
- table => ['book', 'rental'], |
|
320 |
+ table => 'book', |
|
321 | 321 |
where => {book.name => 'Perl'}, |
322 | 322 |
relation => {'book.id' => 'rental.book_id'} |
323 | 323 |
); |
... | ... |
@@ -51,12 +51,39 @@ sub method { |
51 | 51 |
return $self; |
52 | 52 |
} |
53 | 53 |
|
54 |
-sub insert { my $self = shift; $self->dbi->insert(table => $self->table, @_) } |
|
55 |
-sub update { my $self = shift; $self->dbi->update(table => $self->table, @_) } |
|
56 |
-sub update_all { my $self = shift; $self->dbi->update_all(table => $self->table, @_) } |
|
57 |
-sub delete { my $self = shift; $self->dbi->delete(table => $self->table, @_) } |
|
58 |
-sub delete_all { my $self = shift; $self->dbi->delete_all(table => $self->table, @_) } |
|
59 |
-sub select { my $self = shift; $self->dbi->select(table => $self->table, @_) } |
|
54 |
+sub insert { |
|
55 |
+ my $self = shift; |
|
56 |
+ $self->dbi->insert(table => $self->table, @_); |
|
57 |
+} |
|
58 |
+ |
|
59 |
+sub update { |
|
60 |
+ my $self = shift; |
|
61 |
+ $self->dbi->update(table => $self->table, @_) |
|
62 |
+} |
|
63 |
+ |
|
64 |
+sub update_all { |
|
65 |
+ my $self = shift; |
|
66 |
+ $self->dbi->update_all(table => $self->table, @_); |
|
67 |
+} |
|
68 |
+ |
|
69 |
+sub delete { |
|
70 |
+ my $self = shift; |
|
71 |
+ $self->dbi->delete(table => $self->table, @_); |
|
72 |
+} |
|
73 |
+ |
|
74 |
+sub delete_all { |
|
75 |
+ my $self = shift; |
|
76 |
+ $self->dbi->delete_all(table => $self->table, @_); |
|
77 |
+} |
|
78 |
+ |
|
79 |
+sub select { |
|
80 |
+ my $self = shift; |
|
81 |
+ $self->dbi->select( |
|
82 |
+ table => $self->table, |
|
83 |
+ relation => $self->relation, |
|
84 |
+ @_ |
|
85 |
+ ); |
|
86 |
+} |
|
60 | 87 |
|
61 | 88 |
sub update_at { |
62 | 89 |
my $self = shift; |
... | ... |
@@ -84,9 +111,9 @@ sub select_at { |
84 | 111 |
return $self->dbi->select_at( |
85 | 112 |
table => $self->table, |
86 | 113 |
primary_key => $self->primary_key, |
114 |
+ relation => $self->relation, |
|
87 | 115 |
@_ |
88 | 116 |
); |
89 |
- return $self; |
|
90 | 117 |
} |
91 | 118 |
|
92 | 119 |
sub DESTROY { } |
... | ... |
@@ -1558,3 +1558,28 @@ $row = $result->fetch_hash_first; |
1558 | 1558 |
is($row->{key1}, 1); |
1559 | 1559 |
is($row->{key2}, 2); |
1560 | 1560 |
is($row->{key3}, 3); |
1561 |
+ |
|
1562 |
+ |
|
1563 |
+test 'model select relation'; |
|
1564 |
+{ |
|
1565 |
+ package MyDBI7; |
|
1566 |
+ |
|
1567 |
+ use base 'DBIx::Custom'; |
|
1568 |
+ |
|
1569 |
+ sub connect { |
|
1570 |
+ my $self = shift->SUPER::connect(@_); |
|
1571 |
+ |
|
1572 |
+ $self->include_model('MyModel6'); |
|
1573 |
+ |
|
1574 |
+ return $self; |
|
1575 |
+ } |
|
1576 |
+} |
|
1577 |
+$dbi = MyDBI7->connect($NEW_ARGS->{0}); |
|
1578 |
+$dbi->execute($CREATE_TABLE->{0}); |
|
1579 |
+$dbi->execute($CREATE_TABLE->{2}); |
|
1580 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}); |
|
1581 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3}); |
|
1582 |
+$result = $dbi->model('table1')->select(column => ['key3'], where => {'table1.key1' => 1}); |
|
1583 |
+is($result->fetch_hash_first->{key3}, 3); |
|
1584 |
+$result = $dbi->model('table1')->select_at(column => ['key3'], where => [1]); |
|
1585 |
+is($result->fetch_hash_first->{key3}, 3); |
... | ... |
@@ -0,0 +1,5 @@ |
1 |
+package MyModel6; |
|
2 |
+ |
|
3 |
+use base 'DBIx::Custom::Model'; |
|
4 |
+ |
|
5 |
+1; |
... | ... |
@@ -0,0 +1,14 @@ |
1 |
+package MyModel6::table1; |
|
2 |
+ |
|
3 |
+use base 'MyModel6'; |
|
4 |
+ |
|
5 |
+__PACKAGE__->attr( |
|
6 |
+ relation => sub { |
|
7 |
+ { |
|
8 |
+ 'table1.key1' => 'table2.key1' |
|
9 |
+ } |
|
10 |
+ }, |
|
11 |
+ primary_key => sub { ['key1'] } |
|
12 |
+); |
|
13 |
+ |
|
14 |
+1; |
... | ... |
@@ -0,0 +1,5 @@ |
1 |
+package MyModel6::table2; |
|
2 |
+ |
|
3 |
+use base 'MyModel6'; |
|
4 |
+ |
|
5 |
+1; |