NAME Data::Package::SQLite - A data package for a SQLite database SYNOPSIS ### Creating a SQLite data package package My::Data; use strict; use base 'Data::Package::SQLite'; sub sqlite_locate { file => '/var/cache/mydata.sqlite' } 1; ### Using your SQLite data package use My::Data; # Default data access $dbh = My::Data->get; # ... or if you want to be explicit $dbh = My::Data->get('DBI::db'); DESCRIPTION One of the best ways to distribute medium-sized (100k - 100meg) packages containing datasets is using SQLite databases. It allows you to have full SQL access to your data, and you can still provide the data as a single file that does not need user/password access and provides it's own security model (tied to filesystem access). "Data::Package::SQLite" is a Data::Package sub-class for providing simplified read-only access to these databases in the form of a DBI connection handle, without the caller needing to know anything about where the data is actually stored. METHODS Although the primary interface when using a "Data::Package::SQLite" module should be the same as for any other Data::Package module, some additional methods are defined for people creating their own sub-classes of "Data::Package::SQLite". sqlite_dsn The "sqlite_dsn" method return a valid DBI dsn for the creation of the database handle. For any "Data::Package::SQLite" package that you "get" a database handle from, the "sqlite_dsn" method will always return the location of the database that was loaded. When creating a sub-class, you should not return this directly, but are encouraged to instead define your own "sqlite_file" or even better your own "sqlite_location". Returns a DSN string, or throws an exception on error. sqlite_file sub sqlite_file { '/var/cache/my_class/data.sqlite' } The "sqlite_file" method returns the location of the SQLite file to be loaded. Please note that the fact a file name is returned by this method does not necesarily mean it exists, because in some cases incorrect file names can be generated, or a sub-class might defined this method (incorrectly) directly. Returns a file path string, or throws an exception in some error situations. sqlite_location # A general file location somewhere sub sqlite_location { file => '/var/cache/my_class/data.sqlite' } # The default data.sqlite for a distribution sub sqlite_location { dist_file => 'My-Dist' } # A specific file for a distribution sub sqlite_location { dist_file => 'My-Dist', 'sqlite.db' } # The default data.sqlite for a module sub sqlite_location { module_file => 'My::Module' } # A specific file for a module sub sqlite_location { module_file => 'My::Module', 'sqlite.db' } The "sqlite_location" method is the primary method for sub-classes to specify the location of the SQLite database file. It should return a simple 2-3 element list, consisting of a location type and 1 or more location values. The "sqlite_location" method currently accepts 3 location types. file Mostly provides a direct pass-through to "sqlite_file". Takes a second param of the location of the file as a simple string. dist_file The "dist_file" option provides access to the functionality provided by the File::ShareDir function "dist_file". It takes two additional values, the name of the distribution and the name of the file within the dist dir. If the file name is not provided, a default value of data.sqlite is used. module_file The "module_file" option provides access to the functionality provided by the File::ShareDir function "module_file". It takes two additional values, the name of the module and the name of the file within the dist dir. If the file name is not provided, a default value of data.sqlite is used. If not provided, the default implementation of "sqlite_location" will return "( module_file => $class )", where $class is the name of the Data::Package::SQLite sub-class. SUPPORT Bugs should be always be reported via the CPAN bug tracker at: For other issues, contact the author. AUTHORS Adam Kennedy SEE ALSO Data::Package, DBD::SQLite, COPYRIGHT Copyright 2006 Adam Kennedy. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module.