NAME
Algorithm::Dependency::Source::DBI - Database source for Algorithm::Dependency
SYNOPSIS
use
DBI;
# Load the data from a database
my
$data_source
= Algorithm::Dependency::Source::DBI->new(
dbh
=> DBI->
connect
(
'dbi:SQLite:sqlite.db'
),
select_ids
=>
'select name from stuff'
,
select_depends
=>
'select from, to from m2m_deps'
,
);
# Create the dependency object, and indicate the items that are already
# selected/installed/etc in the database
my
$dep
= Algorithm::Dependency->new(
source
=>
$data_source
,
selected
=> [
'This'
,
'That'
]
) or
die
'Failed to set up dependency algorithm'
;
# For the item 'Foo', find out the other things we also have to select.
# This WON'T include the item we selected, 'Foo'.
my
$also
=
$dep
->depends(
'Foo'
);
$also
?
"By selecting 'Foo', you are also selecting the following items: "
.
join
(
', '
,
@$also
)
:
"Nothing else to select for 'Foo'"
;
# Find out the order we need to act on the items in.
# This WILL include the item we selected, 'Foo'.
my
$schedule
=
$dep
->schedule(
'Foo'
);
DESCRIPTION
The Algorithm::Dependency module has shown itself to be quite reliable over a long period of time, as well as relatively easy to setup and use.
However, recently there has been an increasing use of things like DBD::SQLite to store and distribute structured data.
Algorithm::Dependency::Source::DBI extends Algorithm::Dependency by providing a simple way to create dependency objects that pull their data from a database directly.
METHODS
new
my
$simple
= Algorithm::Dependency::Source::DBI->new(
dbh
=>
$dbi_db_handle
,
select_ids
=>
'select name from stuff'
,
select_depends
=>
'select from, to from m2m_deps'
,
);
my
$complex
= Algorithm::Dependency::Source::DBI->new(
dbh
=>
$dbi_db_handle
,
select_ids
=> [
'select name from stuff where foo = ?'
,
'bar'
],
select_depends
=> [
'select from, to from m2m_deps where from = ?'
,
'bar'
],
);
The new
constructor takes three named named params.
The dbh
param should be a standard DBI database connection.
The select_ids
param is either a complete SQL string, or a reference to an ARRAY
containing a SQL string with placeholders and matching variables.
When executed on the database, it should return a single column containing the complete set of all item identifiers.
The select_depends
param is either a complete SQL string, or a reference to an ARRAY
containing a SQL string with placeholders and matching variables.
When executed on the database, it should return two columns containing the complete set of all dependencies, where identifiers in the first-column depends on identifiers in the second-column.
Returns a new Algorithm::Dependency::Source::DBI object, or dies on error.
dbh
The dbh
accessor returns the database handle provided to the constructor.
select_ids
The select_ids
accessor returns the SQL statement provided to the constructor. If a raw string was provided, it will be returned as a reference to an ARRAY
containing the SQL string and no params.
select_depends
The select_depends
accessor returns the SQL statement provided to the constructor. If a raw string was provided, it will be returned as a reference to an ARRAY
containing the SQL string and no params.
SUPPORT
To file a bug against this module, use the CPAN bug tracking system
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Algorithm-Dependency-Source-DBI
For other comments, contact the author.
AUTHOR
Adam Kennedy <adamk@cpan.org>
SEE ALSO
Algorithm::Dependency, http://ali.as/
COPYRIGHT
Copyright 2007 - 2009 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.