/usr/share/perl5/Catmandu/Plugin/Datestamps.pm is in libcatmandu-perl 0.9505-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | package Catmandu::Plugin::Datestamps;
use Catmandu::Sane;
our $VERSION = '0.9505';
use Role::Tiny;
use POSIX qw(strftime);
use namespace::clean;
before add => sub {
my ($self, $data) = @_;
my $now = strftime("%Y-%m-%dT%H:%M:%SZ", gmtime(time));
$data->{date_created} ||= $now;
$data->{date_updated} = $now;
};
1;
__END__
=pod
=head1 NAME
Catmandu::Plugin::Datestamps - Automatically add datestamps to Catmandu::Store records
=head1 SYNOPSIS
# Using configuration files
$ cat catmandu.yml
---
store:
test:
package: MongoDB
options:
database_name: test
bags:
data:
plugins:
- Datestamps
$ echo '{"hello":"world"}' | catmandu import JSON to test
$ catmandu export test to YAML
---
_id: ADA305D8-697D-11E3-B0C3-97AD572FA7E3
date_created: 2013-12-20T13:50:25Z
date_updated: 2013-12-20T13:50:25Z
hello: world
# Or in your Perl program
my $store = Catmandu::Store::MongoDB->new(
database_name => 'test' ,
bags => {
data => {
plugins => [qw(Datestamps)]
}
});
$store->bag->add({
'_id' => '123',
'name' => 'John Doe'
});
my $obj = $store->bag->get('123');
print "%s created at %s\n" , $obj->{name} , $obj->{date_created};
=head1 DESCRIPTION
The Catmandu::Plugin::Datestamps plugin automatically adds/updates datestamp fields in your
records. If you add this plugin to your Catmandu::Store configuration then automatically a
'date_created' and 'date_updated' field gets added to newly ingested records.
The plugin should be set for every bag defined in your Catmandu::Store. In the examples above we've
set the plugin to the default bag 'data' that is created in every Catmandu::Store.
In Catmandu::Store-s that don't have a dynamic schema (e.g. Solr, DBI) these new date fields should be
predefined (e.g by changing the schema.xml or tables fields).
=head1 SEE ALSO
L<Catmandu::Store>, L<Catmandu::Bag>
=cut
|