Mercurial > pub > Impl
diff lib/IMPL/ORM/Entity.pm @ 407:c6e90e02dd17 ref20150831
renamed Lib->lib
author | cin |
---|---|
date | Fri, 04 Sep 2015 19:40:23 +0300 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/IMPL/ORM/Entity.pm Fri Sep 04 19:40:23 2015 +0300 @@ -0,0 +1,47 @@ +package IMPL::ORM::Entity; +use strict; +use warnings; + +use parent qw(IMPL::Object); +use IMPL::Class::Property; + +BEGIN { + public _direct property Name => prop_get; + public _direct property Class => prop_get; + public _direct property Values => prop_get; + public _direct property Schema => prop_get; +} + +sub CTOR { + my ($this,$class,$schema) = @_; + + $this->{$Class} = $class; + (my $name = $class) =~ s/::/_/g; + $this->{$Name} = $name; + $this->Schema = $schema; + $this->{$Values} = { + map {$_->{name},{type => $_->{type}, virtual => $_->{virtual}}} @$schema + }; +} + +sub Store; +*Store = \&dbgStore; + +sub dbgStore { + my ($this,$prop,$value) = @_; + + if ( my $container = $this->{$Values}{$prop} ) { + $container->{oldValue} = $container->{value}; + $container->{value} = $value; + } else { + die new IMPL::InvalidOperationException("Property not found",$this->Name,$prop); + } +} + +sub Get { + my ($this,$prop) = @_; + + return $this->{$Values}{$prop}{value}; +} + +1;