Catmandu::Plugin::Datestamps - Automatically add datestamps to Catmandu::Store
records
# 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};
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).
- datestamp_created_key
- Field name where the creation date is stored. Defaults to
'date_created'. Also aliased as "datestamp_created_field".
- datestamp_updated_key
- Field name where the update date is stored. Defaults to
'date_updated'. Also aliased as "datestamp_updated_field".
- datestamp_format
- Use a custom "strftime" format. See
Catmandu::Util::now for possible format values.
my $store = Catmandu::Store::MyDB->new(bags => {book => {plugins =>
['Datestamps'], datestamp_format => '%Y/%m/%d'}});
my $store = Catmandu::Store::MyDB->new(bags => {book => {plugins =>
['Datestamps'], datestamp_format => 'iso_date_time_millis'}});
Catmandu::Store, Catmandu::Bag