/usr/local/CPAN/Object-I18n/Object/I18n/Storage/CDBI.pm
package Object::I18n::Storage::CDBI;
use strict;
use warnings;
use Carp;
sub new {
my $class = shift;
my ($obj, $method) = @_;
my $self = bless {
object => $obj,
method => $method,
}, $class;
$self->init;
}
sub init {
shift;
}
sub fetch {
my $self = shift;
my $i18n = $self->{object}->i18n;
my $class = $i18n->{class};
my $oid = $i18n->oid;
my $method = $self->{method};
my $language= $i18n->language;
my $cdbi_class = $self->{cdbi_class} or croak "cdbi_class undefined";
my ($obj) = $cdbi_class->search(
class => $class,
instance => $oid,
attr => $method,
language => $language,
) or return;
return $obj->data;
}
sub store {
my $self = shift;
my ($data) = @_;
my $i18n = $self->{object}->i18n;
my $class = $i18n->{class};
my $oid = $i18n->oid;
my $method = $self->{method};
my $language= $i18n->language;
my $cdbi_class = $self->{cdbi_class} or croak "cdbi_class undefined";
my ($obj) = $cdbi_class->find_or_create({
class => $class,
instance => $oid,
attr => $method,
language => $language,
});
die "could not get a '$cdbi_class' object to store into" unless $obj;
$obj->data($data);
$obj->update;
return $obj->data if defined wantarray;
}
1;