Mercurial > pub > Impl
diff _test/Test/ORM/Schema.pm @ 28:6d33f75c6e1f
ORM in works
author | Sergey |
---|---|
date | Mon, 19 Oct 2009 04:13:54 +0400 |
parents | |
children | dd4d72600c69 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/_test/Test/ORM/Schema.pm Mon Oct 19 04:13:54 2009 +0400 @@ -0,0 +1,57 @@ +package Test::ORM::Schema; +use strict; +use warnings; + +require Exporter; +our @ISA = qw(Exporter); +our @EXPORT_OK = qw(); + +package Test::ORM::Schema::Data::User; +use base qw(IMPL::ORM::Object); +use IMPL::Class::Property; + +BEGIN { + public property Name => prop_all, { type => 'String' }; # Field + public property Id => prop_all, { type => 'String' }; # Field + public property Roles => prop_all | prop_list, { type=> 'Test::ORM::Schema::Data::Role'}; # HasMany +} + +package Test::ORM::Schema::Data::Role; +use base qw(IMPL::ORM::Object); +use IMPL::Class::Property; + +BEGIN { + public property Name => prop_all, { type => 'String' }; # Field +} + +package Test::ORM::Schema::Data::Session; +use base qw(IMPL::ORM::Object); +use IMPL::Class::Property; +use IMPL::ORM::Helpers qw(Map); + +BEGIN { + public property Id => prop_get, { type => 'String' }; # Field + public property User => prop_get, { type => 'Test::ORM::Schema::Data::User' }; # HasOne + public property Data => prop_all, { type => Map( 'String','String' ) }; # HasOne + public property AccessTime => prop_get { type => 'DateTime' }; # Field +} + +package Test::ORM::Schema::Data; +use base qw(IMPL::ORM::Schema); + +__PACKAGE__->usePrefix(__PACKAGE__); +__PACKAGE__->Classes qw( + User + Role + Session +); + +__PACKAGE__->ValueTypes ( + 'String' => 'IMPL::ORM::Value::String', + 'DateTime' => 'IMPL::ORM::Value::DateTime', + 'Integer' => 'IMPL::ORM::Value::Inetger', + 'Float' => 'IMPL::ORM::Value::Float', + 'Decimal' => 'IMPL::ORM::Value::Decimal' +); + +1;