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;