28
|
1 package Test::ORM::Schema;
|
|
2 use strict;
|
|
3 use warnings;
|
|
4
|
|
5 require Exporter;
|
|
6 our @ISA = qw(Exporter);
|
|
7 our @EXPORT_OK = qw();
|
|
8
|
|
9 package Test::ORM::Schema::Data::User;
|
|
10 use base qw(IMPL::ORM::Object);
|
|
11 use IMPL::Class::Property;
|
|
12
|
|
13 BEGIN {
|
|
14 public property Name => prop_all, { type => 'String' }; # Field
|
|
15 public property Id => prop_all, { type => 'String' }; # Field
|
|
16 public property Roles => prop_all | prop_list, { type=> 'Test::ORM::Schema::Data::Role'}; # HasMany
|
|
17 }
|
|
18
|
|
19 package Test::ORM::Schema::Data::Role;
|
|
20 use base qw(IMPL::ORM::Object);
|
|
21 use IMPL::Class::Property;
|
|
22
|
|
23 BEGIN {
|
|
24 public property Name => prop_all, { type => 'String' }; # Field
|
|
25 }
|
|
26
|
|
27 package Test::ORM::Schema::Data::Session;
|
|
28 use base qw(IMPL::ORM::Object);
|
|
29 use IMPL::Class::Property;
|
|
30 use IMPL::ORM::Helpers qw(Map);
|
|
31
|
|
32 BEGIN {
|
|
33 public property Id => prop_get, { type => 'String' }; # Field
|
|
34 public property User => prop_get, { type => 'Test::ORM::Schema::Data::User' }; # HasOne
|
|
35 public property Data => prop_all, { type => Map( 'String','String' ) }; # HasOne
|
|
36 public property AccessTime => prop_get { type => 'DateTime' }; # Field
|
|
37 }
|
|
38
|
|
39 package Test::ORM::Schema::Data;
|
|
40 use base qw(IMPL::ORM::Schema);
|
|
41
|
|
42 __PACKAGE__->usePrefix(__PACKAGE__);
|
|
43 __PACKAGE__->Classes qw(
|
|
44 User
|
|
45 Role
|
|
46 Session
|
|
47 );
|
|
48
|
|
49 __PACKAGE__->ValueTypes (
|
|
50 'String' => 'IMPL::ORM::Value::String',
|
|
51 'DateTime' => 'IMPL::ORM::Value::DateTime',
|
|
52 'Integer' => 'IMPL::ORM::Value::Inetger',
|
|
53 'Float' => 'IMPL::ORM::Value::Float',
|
|
54 'Decimal' => 'IMPL::ORM::Value::Decimal'
|
|
55 );
|
|
56
|
|
57 1;
|