Document-TriPart-Cabinet
view release on metacpan or search on metacpan
lib/Document/TriPart/Cabinet/Storage/Disk.pm view on Meta::CPAN
sub document_dir {
my $self = shift;
my $uuid = shift;
$uuid = $uuid->uuid if blessed $uuid && $uuid->can( 'uuid' ); # Probably ::Document
return $self->dir->subdir( $self->uuid_path( $uuid ) );
}
sub document_file {
my $self = shift;
my $uuid = shift;
return $self->document_dir( $uuid )->file( 'document' );
}
sub assets_dir {
my $self = shift;
my $uuid = shift;
return $self->document_dir( $uuid )->subdir( 'assets' );
}
sub _read_document {
my $self = shift;
my $document = shift;
my $document_file = $self->document_file( $document->uuid );
return unless -e $document_file;
$document->_tp->read( $document_file );
# TODO Sanity check that $document->uuid == $uuid
}
sub load {
my $self = shift;
my $document = shift;
$self->_read_document( $document );
}
sub _write_document {
my $self = shift;
my $document = shift;
my $document_file = $self->document_file( $document->uuid );
$document_file->parent->mkpath unless -d $document_file->parent;
$document->_tp->write( $document_file );
}
sub save {
my $self = shift;
my $document = shift;
$self->_write_document( $document );
}
#sub insert {
# my $self = shift;
# my $document = shift;
# $self->_write_document( $document );
#}
#sub update {
# my $self = shift;
# my $document = shift;
# $self->_write_document( $document );
#}
#sub update_or_insert {
# my $self = shift;
# my $document = shift;
# if ( $self->_load( $document ) ) {
# $self->update( $document );
# }
# else {
# $self->insert( $document );
# }
#}
1;
( run in 2.264 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )