| | 169 | # single unique |
| | 170 | do { |
| | 171 | my $set = $model->find_or_create( |
| | 172 | test3 => { single_unique => 'key1' } => { |
| | 173 | id => 'key1', |
| | 174 | data => 'data1', |
| | 175 | } |
| | 176 | ); |
| | 177 | isa_ok($set, 'TestModel::test3'); |
| | 178 | is($set->id, 'key1', 'id'); |
| | 179 | is($set->data, 'data1', 'data'); |
| | 180 | |
| | 181 | my $get = $model->find_or_create( |
| | 182 | test3 => { single_unique => 'key1' } => { |
| | 183 | id => 'key1', |
| | 184 | data => 'data1', |
| | 185 | } |
| | 186 | ); |
| | 187 | isa_ok($get, 'TestModel::test3'); |
| | 188 | is($get->id, 'key1', 'id'); |
| | 189 | is($get->data, 'data1', 'data'); |
| | 190 | |
| | 191 | my @rows = $model->get( 'test3' ); |
| | 192 | is(scalar(@rows), 1, '1 record'); |
| | 193 | |
| | 194 | isa_ok($rows[0], 'TestModel::test3'); |
| | 195 | is($rows[0]->id, 'key1', 'id'); |
| | 196 | is($rows[0]->data, 'data1', 'data'); |
| | 197 | |
| | 198 | |
| | 199 | my $set2 = $model->find_or_create( |
| | 200 | test3 => { single_unique => 'key2' } => { |
| | 201 | id => 'key2', |
| | 202 | data => 'data2', |
| | 203 | } |
| | 204 | ); |
| | 205 | isa_ok($set2, 'TestModel::test3'); |
| | 206 | is($set2->id, 'key2', 'id'); |
| | 207 | is($set2->data, 'data2', 'data'); |
| | 208 | |
| | 209 | my $get2 = $model->find_or_create( |
| | 210 | test3 => { single_unique => 'key2' } => { |
| | 211 | id => 'key2', |
| | 212 | data => 'data2', |
| | 213 | } |
| | 214 | ); |
| | 215 | isa_ok($get2, 'TestModel::test3'); |
| | 216 | is($get2->id, 'key2', 'id'); |
| | 217 | is($get2->data, 'data2', 'data'); |
| | 218 | |
| | 219 | @rows = $model->get( 'test3' ); |
| | 220 | is(scalar(@rows), 2, '2 record'); |
| | 221 | |
| | 222 | isa_ok($rows[0], 'TestModel::test3'); |
| | 223 | is($rows[0]->id, 'key1', 'id'); |
| | 224 | is($rows[0]->data, 'data1', 'data'); |
| | 225 | |
| | 226 | isa_ok($rows[1], 'TestModel::test3'); |
| | 227 | is($rows[1]->id, 'key2', 'id'); |
| | 228 | is($rows[1]->data, 'data2', 'data'); |
| | 229 | }; |
| | 230 | |
| | 231 | # multi primary key |
| | 232 | do { |
| | 233 | my $set = $model->find_or_create( |
| | 234 | test4 => { multi_unique => [qw/ key10 key20 /] } => { |
| | 235 | id1 => 'key10', |
| | 236 | id2 => 'key20', |
| | 237 | data => 'data1', |
| | 238 | } |
| | 239 | ); |
| | 240 | isa_ok($set, 'TestModel::test4'); |
| | 241 | is($set->id1, 'key10', 'id1'); |
| | 242 | is($set->id2, 'key20', 'id2'); |
| | 243 | is($set->data, 'data1', 'data'); |
| | 244 | |
| | 245 | my $get = $model->find_or_create( |
| | 246 | test4 => { multi_unique => [qw/ key10 key20 /] } => { |
| | 247 | id1 => 'key10', |
| | 248 | id2 => 'key20', |
| | 249 | data => 'data1', |
| | 250 | } |
| | 251 | ); |
| | 252 | isa_ok($get, 'TestModel::test4'); |
| | 253 | is($get->id1, 'key10', 'id1'); |
| | 254 | is($get->id2, 'key20', 'id2'); |
| | 255 | is($get->data, 'data1', 'data'); |
| | 256 | |
| | 257 | my @rows = $model->get( 'test4' ); |
| | 258 | is(scalar(@rows), 1, '1 record'); |
| | 259 | |
| | 260 | isa_ok($rows[0], 'TestModel::test4'); |
| | 261 | is($rows[0]->id1, 'key10', 'id1'); |
| | 262 | is($rows[0]->id2, 'key20', 'id2'); |
| | 263 | is($rows[0]->data, 'data1', 'data'); |
| | 264 | |
| | 265 | my $set2 = $model->find_or_create( |
| | 266 | test4 => { multi_unique => [qw/ key11 key21 /] } => { |
| | 267 | id1 => 'key11', |
| | 268 | id2 => 'key21', |
| | 269 | data => 'data2', |
| | 270 | } |
| | 271 | ); |
| | 272 | isa_ok($set2, 'TestModel::test4'); |
| | 273 | is($set2->id1, 'key11', 'id1'); |
| | 274 | is($set2->id2, 'key21', 'id2'); |
| | 275 | is($set2->data, 'data2', 'data'); |
| | 276 | |
| | 277 | my $get2 = $model->find_or_create( |
| | 278 | test4 => { multi_unique => [qw/ key11 key21 /] } => { |
| | 279 | id1 => 'key11', |
| | 280 | id2 => 'key21', |
| | 281 | data => 'data2', |
| | 282 | } |
| | 283 | ); |
| | 284 | isa_ok($get2, 'TestModel::test4'); |
| | 285 | is($get2->id1, 'key11', 'id1'); |
| | 286 | is($get2->id2, 'key21', 'id2'); |
| | 287 | is($get2->data, 'data2', 'data'); |
| | 288 | |
| | 289 | @rows = $model->get( 'test4' ); |
| | 290 | is(scalar(@rows), 2, '1 record'); |
| | 291 | |
| | 292 | isa_ok($rows[0], 'TestModel::test4'); |
| | 293 | is($rows[0]->id1, 'key10', 'id1'); |
| | 294 | is($rows[0]->id2, 'key20', 'id2'); |
| | 295 | is($rows[0]->data, 'data1', 'data'); |
| | 296 | |
| | 297 | isa_ok($rows[1], 'TestModel::test4'); |
| | 298 | is($rows[1]->id1, 'key11', 'id1'); |
| | 299 | is($rows[1]->id2, 'key21', 'id2'); |
| | 300 | is($rows[1]->data, 'data2', 'data'); |
| | 301 | }; |
| | 302 | |
| | 303 | # index is error |
| | 304 | do { |
| | 305 | eval { |
| | 306 | $model->find_or_create( |
| | 307 | test5 => { single_index => 'key1' } => { |
| | 308 | data => 'data1', |
| | 309 | } |
| | 310 | ); |
| | 311 | }; |
| | 312 | like($@, qr/'single_index' is not unique index/, 'not use normal index'); |
| | 313 | }; |
| | 314 | |