use strict;
# just a test script for testing Rose functions
use Rose::DB;
use Rose::DateTime::Util qw(:all);
use Data::Dumper;
Rose::DB->register_db(
driver => 'mysql',
database => 'test',
username => 'raj',
password => 'adm1n',
);
#-------------------------------------------------------------------------------
package Foo;
use base qw(Rose::DB::Object);
use Rose::DB::Object::Helpers qw(as_tree);
__PACKAGE__->meta->setup(
table => 't1',
columns => [
id => { type => 'int' },
ts => { type => 'timestamp' },
sample_code => { type => 'varchar', length => 4 },
],
relationships => [
bar => {
class => 'Bar',
column_map => { id => 'id' },
type => 'one to one',
},
],
);
__PACKAGE__->meta->make_manager_class('foo');
1;
package Bar;
use base qw(Rose::DB::Object);
use Rose::DB::Object::Helpers qw(as_tree);
__PACKAGE__->meta->setup(
table => 't2',
columns => [
id => { type => 'int' },
ts => { type => 'timestamp' },
sample_type => { type => 'varchar', length => 10 },
],
relationships => [
foo => {
class => 'Foo',
column_map => { id => 'id' },
type => 'one to one',
},
],
);
1;
#-------------------------------------------------------------------------------
package main;
$Rose::DB::Object::Debug = 1;
my $f = Foo->new(id => 123, ts => parse_date('now'), sample_code => 'this' );
# $DB::single=1; # perl -d script/test_script.pl, c , x $f
$f->save;
my %args = (
query => [
# not => [ { id => 123, timestamp => { le => \'NOW' } } ]
# id => 123,
sample_code => 'thisistoolong',
]
);
eval {
my $o = Foo::Manager->get_foo(%args);
warn Dumper map $_->as_tree, @$o;
}; warn $@ if $@;
{ # doesn't work - throws error:
my $o = Foo->new(id => 1); # warn Dumper $o;
$o->load(with => 'bar', speculative => 1); warn Dumper $o;
$o->sample_code('PB');
$o->bar->sample_type('blood');
$o->insert_or_update(cascade => 1);
}
# Output:
#
# INSERT INTO t1
# (
# id,
# ts
# )
# VALUES
# (
# ?,
# ?
# ) - bind params: 123, 2009-05-14 15:26:31