NAME
Metadata::DB::File - metadata object about a file
SYNOPSIS
use Metadata::DB::File;
my $f = Metadata::DB::File->new({
DBH => $dbh,
abs_path => '/home/myself/file',
});
$f->set('client' => 'James Mahoney');
$f->save;
my $id1 = $f->id;
my $f2 = Metadata::DB::File->new({ DBH => $dbh, id => $id1 });
$f2->get('client'); # eq 'James Mahoney'
my $f = Metadata::DB::File::Base->new({
DBH => $dbh,
abs_path => '/home/myself/this',
host_id => 3,
});
DESCRIPTION
This is the 'file' counterpart to Metadata::DB::Base
This lets you store metadata in a database, about a file on disk The system is extremely adaptive. The manner in which we store metadata and the way in which we store information on what the resources are, is separate.
You can store info on many files on many computers.
To load the file data. The object must know which record you are referring to. You can tell it either the id, or the absolute path and host to record.
METHODS
In addition to all the methods in Metadata::DB::Base ..
new()
you can specify arguments 'id' or 'abs_path', and optionally 'host_id' otherwise you should use file_set()
id
file id, same as in metadata table, only reason you should have this
for the constructor is out of a search query
abs_path
absolute path to file
host_id
optional, not currently implemented, but you could use it
abs_path_resolve
boolean, if we should normalize the paths with Cwd::abs_path
if a host id is set, will ignore
default is 0
id_exists()
is record in metadata table by id? (See Metadata::DB)
abs_path_exists()
is the record in files table by path? (and host_id if set)
file_set()
argument is file id or abs_path and optionally host_id
$f->file_set('/home/hi/there');
$f->file_set('/home/hi/there',4); # with host id
$f->file_set(43); # via id only
if first arg is a number, we interpret as an id
abs_path()
returns abs path, must be set via constructor
host_id()
returns host id if any is set
host_id_set()
abs_path_set()
SETTING UP THE DATABASE
use Metadata::DB::File::Base;
my $s = Metadata::DB::File::Base->new({ DBH => $dbh });
$s->table_metadata_check;
$s->table_files_check;
exit;
SEE ALSO
Metadata::DB Metadata::DB::File::Base
I would like to be able to instance these ways:
Example 1
my $f = Metadata::DB::File::Base->new({
DBH => $dbh,
});
$f->abs_path_set('/home/myself/hey',$hostid);
$f->set( age => 4 ); # does not need to call load or save
$f->get('author'); # calls load, does NOT generate id unless there already
$f->set( author => 'leo' ); # does not call load, does not generate id
$f->id; # will call load, will generate id if not there
Example 2
my $f = Metadata::DB::File::Base->new({
DBH => $dbh,
});
$f->id_set(2); # calls load, does NOT generate id, croaks if not in db
$f->get('author'); # calls load
how the identity should be determined
)) via constructor id
if an id is in the constructor
should we write to db immediately?? No
)) via constructor abs_path
if abs path is in const arg
and we ask for id, we should return undefined unless we saved or loaded
)) via id_set
id set should ONLY accept the value IF it is already in database
id set should warn and return undef if not in db (files table)
)) via abs_path_set
this should not save to db auto.. ?
if you set abs path,
and then request id
and the id is not in the db
then none is returned, and you are warned to save first
before you get an id
# if you set abs path and then request id, that should make sure an entry is in the db???