The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Name

File::DataClass::Storage - Storage base class

Synopsis

Description

Storage base class

Configuration and Environment

Defines the following attributes;

atomic_write

Hash reference containing the keys of any locks set by the storage object. Used during object destruction to free any left over locks

backup

Extension appended to the file name. Used to create a backup of the updated file. Defaults to the null string so no backup created

encoding

Used by subclasses to encode/decode the file data on ouput/input. Defaults to the null string

extn

The filename extension for this type of file. Usually overridden in the subclass. Default to the null string

read_options

This hash reference is used to customise the decoder object used when reading the file. It defaults to an empty reference

schema

A weakened schema object reference

write_options

This hash reference is used to customise the encoder object used when writing the file. It defaults to an empty reference

Subroutines/Methods

create_or_update

   $bool = $self->create_or_update( $path, $result, $updating, $condition );

Does the heavy lifting for "insert" and "update". The $updating boolean is true for updating false otherwise. The $condition code reference is used to filter updates

delete

   $bool = $storage->delete( $path, $result );

Deletes the specified result object returning true if successful. Throws an error otherwise. Path is an instance of File::DataClass::IO. The result is an instance of File::DataClass::Result

DEMOLISH

Called during object destruction it deletes any outstanding locks

dump

   $data = $storage->dump( $path, $data );

Dumps the data to the specified path. Path is an instance of File::DataClass::IO

insert

   $bool = $storage->insert( $path, $result );

Inserts the specified result object returning true if successful. Throws an error otherwise. Path is an instance of File::DataClass::IO. The result is an instance of File::DataClass::Result

load

   $hash_ref = $storage->load( @paths );

Loads each of the specified files merging the resultant hash ref which it returns. Paths are instances of File::DataClass::IO

meta_pack

Converts from scalar to hash reference. The scalar is the modification time of the file

meta_unpack

Converts from hash reference to scalar. The scalar is the modification time of the file

read_file

   ($data, $mtime) = $self->read_file( $path, $for_update ):

Read a file from cache or disk

read_from_file

   $data = $self->read_from_file( $io_object_ref );

Should be overridden in the subclass

select

   $hash_ref = $storage->select( $path );

Returns a hash reference containing all the records for the result source specified in the schema. Path is an instance of File::DataClass::IO

txn_do

Executes the supplied coderef wrapped in lock on the pathname

update

   $bool = $storage->update( $path, $result, $updating, $condition );

Updates the specified result object returning true if successful. Throws an error otherwise. Path is an instance of File::DataClass::IO. The result is an instance of File::DataClass::Result

validate_params

   $storage->validate_params( $path, $rsrc_name );

Throw if $path or $rsrc_name are not specified or $path is not blessed

write_file

   $data = $self->write_file( $path, $data, $create );

Writes $data to $path. Will throw if $create is not true and $path does not exist

write_to_file

   $data = $self->write_to_file( $io_object_ref, $data );

Should be overridden in the subclass

Diagnostics

None

Dependencies

Unexpected

Incompatibilities

There are no known incompatibilities in this module

Bugs and Limitations

There are no known bugs in this module. Please report problems to the address below. Patches are welcome

Author

Peter Flanigan, <pjfl@cpan.org>

License and Copyright

Copyright (c) 2017 Peter Flanigan. All rights reserved

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic

This program is distributed in the hope that it will be useful, but WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE