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:

    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Package-SQLite>

    For other issues, contact the author.

AUTHORS
    Adam Kennedy <cpan@ali.as>

SEE ALSO
    Data::Package, DBD::SQLite, <http://ali.as/>

COPYRIGHT
    Copyright 2006 Adam Kennedy. All rights reserved.

    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.