CGI::Application::Plugin::DBIC::Schema - Easy DBIx::Class access from CGI::Application, inspired by CGI::Application::Plugin::DBH.
use CGI::Application::Plugin::DBIC::Schema (qw/dbic_config schema resultset rs/); sub cgiapp_init{ my $c = shift; my $dsn = $c->param('dsn'); my $dbpw = $c->param('dbpw'); my $dbuser = $c->param('dbuser'); # Provide a default config. $c->dbic_config({schema=>"My::DB", # DBIC class connect_info=>[$dsn,$dbuser,$dbpw] # use same args as DBI connect }); } sub setup { my $c = shift; $c->start_mode('runmode1'); $c->run_modes([qw/runmode1 runmode2/]); } sub runmode1 { my $c = shift; my $id = $c->param('id); $c->resultset("My::DB::DemoTable")->find($id); # do something with the object ... return "found it."; } sub runmode2 { my $c = shift; $c->schema()->resultset("My::DB::DemoTable") ->create({name=>"John Doe", address=>"Any Street"}); return "created it"; }
CGI::Application::Plugin::DBIC::Schema adds easy access to a DBIx::Class::Schema to your Titanium or CGI::Application modules. Lazy loading is used to prevent a database connection from being made if the schema method is not called during the request. In other words, the database connection is not created until it is actually needed.
schema
DBIx::Class has lots of dependencies, and therefore a certain length of compile time, but it works fine in a CGI environment for low volume sites. If you expect a high volume of traffic, think about FastCGI or other alternatives.
This method will return the default DBIx::Class::Schema instance if no name is provided. Provide a schema name to retrieve an alternate schema. The schema instance is created on the first call to this method, and any subsequent calls will return the same instance.
my $schema = $c->schema(); # gets default (unnamed) schema # Or ... my $schem = $c->schema('my_schema_name'); # gets one of named schemas
Used to provide your DBIx::Class::Schema class name, an optional config name, and DBI connection parameters. For \%config_info supply the same parameter list that you would for DBI::connect. You may also supply DBIx::Class specifig attributes. For that see DBIx::Class::Storage::DBI for details.
The recommended place to call dbic_config is in the cgiapp_init stage of CGI::Application. If this method is called after the dbic() method has already been accessed, then it will die with an error message.
dbic_config
cgiapp_init
# Setup default schema config $c->dbic_config({schema=>"My::DB", # DBIC class connect_info=>[$dsn,$dbuser,$dbpw] # use same args as DBI connect }); # Or, provide additional configs by name. $c->dbic_config("another_config", {schema=>"My::Other::DB", connect_info=>[$dsn,$dbuser,$dbpw] });
An alias to $c->schema(...)->resultset(...).
This method provides DBIx::Class::Resultset access.
# Use the default dbic schema via 'resultset'. $c->resultset("DBICT::Result::Test")->find($id); # Or use a named config to access resultset via an alternative schema. $c->resultset('another_config', "DBICT::Result::Test")->find($id); # Or use alias short form, 'rs' with default config $c->rs("DBICT::Result::Test")->find($id); # Or use alias short form with alternate config/schema $c->rs('yet_another_schema', "DBICT::Result::Test")->find($id);
An alias to resultset
DBIx::Class, Titanium, CGI::Application,CGI::Application::Plugin::DBH
Gordon Van Amburg <gordon@minipeg.net>
Copyright (C) 2009 Gordon Van Amburg <gordon@minipeg.net>
This library is free software. You can modify and or distribute it under the same terms as Perl itself.
To install CGI::Application::Plugin::DBIC::Schema, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CGI::Application::Plugin::DBIC::Schema
CPAN shell
perl -MCPAN -e shell install CGI::Application::Plugin::DBIC::Schema
For more information on module installation, please visit the detailed CPAN module installation guide.