# DBD::SQLite::VirtualTable::FileContent - phpMan

## NAME
    [DBD::SQLite::VirtualTable::FileContent] -- virtual table for viewing file
    contents

## SYNOPSIS
    Within Perl :

      $dbh->sqlite_create_module(fcontent => "[DBD::SQLite::VirtualTable::FileContent]");

    Then, within SQL :

      CREATE VIRTUAL TABLE tbl USING fcontent(
         source      = src_table,
         content_col = content,
         path_col    = path,
         expose      = "path, col1, col2, col3", -- or "*"
         root        = "/foo/bar"
         get_content = [Foo::Bar::read_from_file]
        );

      SELECT col1, path, content FROM tbl WHERE ...;

## DESCRIPTION
    A "FileContent" virtual table is bound to some underlying *source
    table*, which has a column containing paths to files. The virtual table
    behaves like a database view on the source table, with an added column
    which exposes the content from those files.

    This is especially useful as an "external content" to some fulltext
    table (see [DBD::SQLite::Fulltext_search]) : the index table stores some
    metadata about files, and then the fulltext engine can index both the
    metadata and the file contents.

## PARAMETERS
    Parameters for creating a "FileContent" virtual table are specified
    within the "CREATE VIRTUAL TABLE" statement, just like regular column
    declarations, but with an '=' sign. Authorized parameters are :

    "source"
        The name of the *source table*. This parameter is mandatory. All
        other parameters are optional.

    "content_col"
        The name of the virtual column exposing file contents. The default
        is "content".

    "path_col"
        The name of the column in "source" that contains paths to files. The
        default is "path".

    "expose"
        A comma-separated list (within double quotes) of source column names
        to be exposed by the virtual table. The default is "*", which means
        all source columns.

    "root"
        An optional root directory that will be prepended to the *path*
        column when opening files.

    "get_content"
        Fully qualified name of a Perl function for reading file contents.
        The default implementation just slurps the entire file into a
        string; but this hook can point to more sophisticated
        implementations, like for example a function that would remove html
        tags. The hooked function is called like this :

          $file_content = $get_content->($path, $root);

## AUTHOR
    Laurent Dami <<dami@cpan.org>>

## COPYRIGHT AND LICENSE
    Copyright Laurent Dami, 2014.

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

