Rose::DB::Object is a base class for objects that encapsulate a single row in a
database table.
Rose::DB is a wrapper and abstraction layer for DBI-related functionality.
In the tradition of Rose::DB::Object::Helpers, more importable methods.
This class inherits from Rose::Object::MixIn. See the Rose::Object::MixIn
documentation for a full explanation of how to import methods from
this class. The helper methods themselves are described below.
Rose::DBx::Object::Renderer generates web UIs for Rose::DB::Object.
It encapsulates many web conventions in the generated UIs as default
behaviours. For example, email addresses are by default rendered as
mailto links in tables and appropiate validation is enforced
automatically in forms. These behaviours are highly extensible.
Renderer uses CGI::FormBuilder to generate forms and the Google Chart
API to render charts. Template::Toolkit is used for template processing,
however, Renderer can dynamically generate a full set of UIs without
any templates.
SQL portability layer for LIMIT emulation.
Generates SQL from Perl datastructures. This is a subclass of SQL::Abstract,
fully compatible with the parent class, but it handles a few additional SQL
constructs, and provides a different API with named parameters instead of
positional parameters, so that various SQL fragments are more easily
identified.
This module was designed for the specific needs of DBIx::DataModel, but is
published as a standalone distribution, because it may possibly be useful for
other needs.
SQL::Abstract::Plugin::InsertMulti is enable bulk insert support for
SQL::Abstract. Declare 'use SQL::Abstract::Plugin::InsertMulti;' with
'use SQL::Abstract;', exporting insert_multi() and update_multi()
methods to SQL::Abstract namespace from
SQL::Abstract::Plugin::InsertMulti.
Plugin system is depends on 'into' options of Sub::Exporter.
This module was inspired by the excellent DBIx::Abstract. However, in
using the module I found that what I wanted to do was generate SQL, but
still retain complete control over my statement handles and use the DBI
interface. So, I set out to create an abstract SQL generation module.
This module is based largely on DBIx::Abstract. However, there are
several important differences, especially when it comes to WHERE
clauses. I have modified the concepts used to make the SQL easier to
generate from Perl data structures and, IMO, more intuitive.
SQL::Interp converts a list of intermixed SQL fragments and
variable references into a conventional SQL string and list
of bind values suitable for passing onto DBI. This simple
technique creates database calls that are simpler to create
and easier to read, while still giving you full access to
custom SQL.
SQL::Interp properly binds or escapes variables. This recommended
practice safeguards against "SQL injection" attacks. The DBI
documentation has several links on the topic.
Besides the simple techniques shown above, The SQL-Interpolate
distribution includes the optional DBIx::Interp module.
SQL::Maker is yet another SQL builder class. It is based on
DBIx::Skinny's SQL generator.