Zakariyya Mughal

NAME

Biblio::Zotero::DB - helper module to access the Zotero SQLite database

VERSION

version 0.002

SYNOPSIS

  my $db = Biblio::Zotero::DB->new( profile_name => 'abc123.default' );
  $db->schema->resultset('Item')->all;

ATTRIBUTES

schema

A DBIx::Class schema that is connected to the zotero.sqlite file.

This can be cleared using clear_schema.

db_file

A string that contains the filename of the zotero.sqlite file. The default is located in the directory of "profile_directory" attribute.

storage_directory

A string that contains the directory where the Zotero attachments are located. The default is the storage subdirectory of the "profile_directory" directory.

profile_directory

A string that contains the directory where the zotero.sqlite database is located,

  $db->profile_directory( "$ENV{HOME}/.zotero/zotero/abc123.default/zotero/" );

profile_name

A string containing the profile name to use. Setting this will set the "profile_directory" attribute.

  $db->profile_name( 'abc123.default' );
  # corresponds to a profile directory such as
  # <~/.zotero/zotero/abc123.default/zotero/>

METHODS

find_profile_directories()

Returns an arrayref of the possible profile directories that contain a Zotero SQLite database. This can be used as a class method.

see: http://www.zotero.org/support/zotero_data

  Biblio::Zotero::DB->find_profile_directories()
  # returns:
  # [
  #   "$ENV{HOME}/.zotero/zotero/abc123.default/zotero",
  #   "$ENV{HOME}/.zotero/zotero/def567.default/zotero"
  # ]

EXAMPLE

  use Biblio::Zotero::DB;
  use List::UtilsBy qw(min_by);

  # find the most recently modified
  my $newest = min_by { -M } @{Biblio::Zotero::DB->find_profile_directories};
  my $db = Biblio::Zotero::DB->new( profile_directory => $newest  );

  # if there is an issue with the database lock here,
  # see L<Biblio::Zotero::DB::Role::CopyDB>
  $db->schema->resultset('Item')->all;

SEE ALSO

AUTHOR

Zakariyya Mughal <zmughal@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Zakariyya Mughal.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.