Ambrosia
view release on metacpan or search on metacpan
lib/Ambrosia/EntityDataModel.pm view on Meta::CPAN
package Ambrosia::EntityDataModel;
use strict;
use warnings;
use Ambrosia::Assert;
use Ambrosia::core::Nil;
use Ambrosia::error::Exceptions;
use Ambrosia::QL;
use Ambrosia::Utils::Util qw/pare_list/;
use Ambrosia::DataProvider;
use Ambrosia::Utils::Enumeration property => _state => NEW => 0, LOADED => 1, UPDATED => 2, SAVED => 3;
#NEW ÐовÑй обÑекÑ. ÐнÑоÑмаÑÐ¸Ñ Ð² storage не оÑпÑавлÑлаÑÑ.
#LOADED ÐбÑÐµÐºÑ Ð¿ÑоÑиÑан из storage.
#UPDATED ÐбÑÐµÐºÑ Ð²Ð·ÑÑ Ð¸Ð· Ñ
ÑанилиÑа и изменен.
#SAVED ÐнÑоÑмаÑÐ¸Ñ Ð¾Ð± обÑекÑе ÑоÑ
Ñанена в storage.
use Ambrosia::Meta;
class abstract
{
private => [qw/_state/],
};
our $VERSION = 0.010;
################################################################################
sub _map() { return shift->__AMBROSIA_ALIAS_FIELDS__ || {} }
sub _init
{
my $self = shift;
$self->SUPER::_init(@_);
if ( $self->key_value() )
{
$self->SET_LOADED;
}
else
{
$self->SET_NEW;
}
}
################################################################################
# statics
################################################################################
sub handler
{
storage()->driver($_[0]->driver_type(), $_[0]->source_name())->handler()
}
sub driver_type
{
return 'DBI';
}
sub source_name
{
}
sub table
{
}
sub source_path
{
my $driver = storage()->driver($_[0]->driver_type(), $_[0]->source_name());
return $driver->catalog, $driver->schema, $_[0]->table();
}
#РедакÑиÑÑемÑе Ð¿Ð¾Ð»Ñ (ÑоÑ
ÑанÑемÑе в ÐÐ). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ñе public Ð¿Ð¾Ð»Ñ ÐºÐ»Ð°ÑÑа
#Edited fields (storage in Data Source). Default all publick fields of class.
sub edit_fields
{
return $_[0]->fields();
}
sub fields_mapping()
{
my $proto = shift;
return map { $proto->_map->{$_} || $_ } $proto->edit_fields();
}
#ÐозвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ ÐºÐ»ÑÑа клаÑÑа.
#СооÑвеÑÑÑвÑÐµÑ Ð°Ð²ÑоинкÑеменÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð² ÐÐ.
#ÐÑли поле не авÑоинкÑеменÑное иÑполÑзÑем key
sub primary_key
{
}
#СоÑÑÑавной клÑÑ
#Ðоведение по-ÑмолÑаниÑ. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÐµÑеопÑеделено в доÑеÑнем клаÑÑе.
sub key
( run in 0.525 second using v1.01-cache-2.11-cpan-5b529ec07f3 )