Giter VIP home page Giter VIP logo

algorithm-dependency-source-dbi's Introduction

NAME
    Algorithm::Dependency::Source::DBI - Database source for
    Algorithm::Dependency

SYNOPSIS
      use DBI;
      use Algorithm::Dependency;
      use Algorithm::Dependency::Source::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' );
      print $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-Sou
    rce-DBI>

    For other comments, contact the author.

AUTHOR
    Adam Kennedy <[email protected]>

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.

algorithm-dependency-source-dbi's People

Contributors

adamkennedy avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.