Alzabo::QuickRef - A quick reference to methods in the Alzabo classes


NAME

Alzabo::QuickRef - A quick reference to methods in the Alzabo classes


GENERAL

Architecture

The general design of Alzabo is as follows.

There are objects representing the schema, which contains table objects. Table objects contain column, foreign key, and index objects. Column objects contain column definition objects. A single column definition may be shared by multiple columns, but has only one owner.

This is a diagram of these inheritance relationships:

  Alzabo::* (::Schema, ::Table, ::Column, ::ColumnDefinition, ::ForeignKey, ::Index)
                   /   \
                is parent to
                 /       \
 Alzabo::Create::*   Alzabo::Runtime::*

This a diagram of how objects contain other objects:

                      Schema - makes--Alzabo::SQLMaker subclass object (many)
                     /      \
              contains       contains--Alzabo::Driver subclass object (1)
                  |                 \
               Table (0 or more)     Alzabo::RDBMSRules subclass object (1)
                /  \                  (* Alzabo::Create::Schema only)
               /    \
              contains--------------------
             /        \                   \
            /          \                   \
     ForeignKey      Column (0 or more)    Index (0 or more)
     (0 or more)       |
                    contains
                       |
                  ColumnDefinition (1)

Note that more than one column _may_ share a single definition object (this is explained in the Alzabo::Create::ColumnDefinition documentation). This is only relevant if you are writing a schema creation interface.

Alzabo, Alzabo::Create, and Alzabo::Runtime

These modules are mostly used just to load other modules. The Alzabo::Runtime module can be used to preload schemas at compile time by doing:

  use Alzabo::Runtime qw( schema1 schema2 schema3 );


METHODS

Creating/removing a schema

Alzabo::Create::Schema

This object represents a schema, and contains one or more table objects. It is only used when creating or altering a schema, as opposed to when fetching data. Data manipulation is done via the Alzabo::Runtime::* classes.

Retrieving data

Alzabo::Runtime::Schema

This object allows you to connect to the database. It contains one data retrieval, method join.

Alzabo::Runtime::Table

Objects in this class have methods allowing you to insert new rows as well as retrieving exist data in the form of Alzabo::Runtime::Row or Alzabo::Runtime::RowCursor objects.

All methods that return a single row return an Alzabo::Runtime::Row object.

All methods that return multiple rows return an Alzabo::Runtime::RowCursor object.

All methods that return rows can be given the no_cache parameter, which ensures that the row(s) returned will not be cached. Rows obtained in this manner should not be updated or deleted, as this will play havoc with the caching system. See the Alzabo::Runtime::Row documentation for more details.

All methods that return multiple rows in the form of a cursor object can take an order_by parameter. See the Alzabo::Runtime::Table documentation for more details.

Alzabo::Runtime::Row

Objects in this class represent a single row of data. You can retrieve the actual column values from it, update it, or delete it.

Alzabo::Runtime::RowCursor

Objects in this class are used to return multiple rows as a cursor, rather than as a list. This is much more efficient, at the expense of a few extra lines in your code.


AUTHOR

Dave Rolsky, <autarch@urth.org>

 Alzabo::QuickRef - A quick reference to methods in the Alzabo classes