PerlDoc

See PublishedAPI for packages intended to be used by Plugin and Contrib authors, or browse all packages.
See also Developing plugins, Developer's Bible, Technical Overview


Parent package: Foswiki::DBI
Child packages:

    internal package Foswiki::DBI::Database

    abstract class for any type of database connecting to foswiki

    ClassMethod new()

    Constructs a Foswiki::DBI::Database object. This class is mostly subclassed by the acutal database implementation being configured, such as Foswiki::DBI::Database::MariaDB. Subclasses need to specify the actual DBD driver to connect to the database.

    ObjectMethod getClassName() → $string

    Returns the base name of this database representing the current implementation, such as MariaDB

    ObjectMethod applySchema($schema)

    Applies the Schema to the connected database. this is called only once when the database is connected. note that the schema must test for existing tables and indexes on its own.

    ObjectMethod schemaVersion($type, $version) → $version

    getter/setter for the schema version meta data

    ObjectMethod handler() → $dbh

    Returns the DBD handler that this class is delegating all work to

    ObjectMethod connect()

    Connects to the database if not already done so and returns a DBI::db handler. this method is called automatically when the db handler is established

    ObjectMethod finish()

    Called solely by Foswikik::DBI::finish() to finalize the database connection and close any open sockets.

    ObjectMethod eachRow($tableName, %params) → $iterator

    Returns an object of class Foswiki::Iterator::DBIterator for the given parameters. This is a convenience wrapper for

    my $it = Foswiki::Iterator::DBIterator->new($dbh, $stm);
    

    The statement handler is created based on the parameters provided. The %params parameter is a hash with the following values:

    • columns: list of columns to return, defaults to "*"
    • avg: column to compute an average for
    • sum: column to compute the sum for
    • having: "HAVING" clause SQL statement
    • groupBy: groupBy "GROUP BY" clause
    • sort, orderBy: "SORT" clause
    • filter: "WHERE" clause
    • groupConcat: "GROUP_CONCAT(DISTINCT …)" clause
    • count: if defined adds a "COUNT(*) clause, if count is prefixed with "unique" will add a "COUNT(DISTINCT …)"
    • <colName>: <colVal> … will add a "colName1='colVal1'" to the "WHERE" clause

    Note that all parameters except $tableName are optional.

    Example:

    my $it = Foswiki::DBI::getDB->eachRow("SomeTable", 
      count => "*"
      firstName => "Michael"
    );
    
    while ($it->hasNext) {
      my $row = $it->next();
    
      my $firstName = $row->{firstName};
      my $middleName = $row->{middleName};
      my $lastName = $row->{lastName};
      my $count = $row->{count};
    
      ...
    }
    

    Topic revision: r1 - 06 Aug 2023, UnknownUser
    This site is powered by FoswikiCopyright © by the contributing authors. All material on this site is the property of the contributing authors.
    Ideas, requests, problems regarding Foswiki? Send feedback