NAME
Catalyst::Plugin::RapidApp::RapidDbic - Instant web front-ends for DBIx::Class
QUICK START
To get started very quickly with a new app, see the RapidDbic helper for bootstrapping a new app in the manual:
SYNOPSIS
package MyApp;
use Catalyst qw/ RapidApp::RapidDbic /;
Then, also in the main Catalyst app class:
__PACKAGE__->config(
'Plugin::RapidApp::RapidDbic' => {
dbic_models => ['DB','OtherModel'],
# All custom configs optional...
configs => {
DB => {
grid_params => {
# ...
},
TableSpecs => {
# ...
}
},
OtherModel => {
# ...
}
}
}
);
Or, within individual DBIC::Schema model class(es):
package MyApp::Model::DB;
use Moo;
extends 'Catalyst::Model::DBIC::Schema';
__PACKAGE__->config(
schema_class => 'MyApp::DB',
connect_info => {
# ...
},
RapidDbic => {
# All custom configs optional...
grid_params => {
# to make all grids editable:
'*defaults' => {
updatable_colspec => ['*'],
creatable_colspec => ['*'],
destroyable_relspec => ['*'],
# ...
},
MySourceA => {
persist_immediately => {
# Save only when clicking "Save" button...
create => 0, update => 0, destroy => 0
},
# ...
}
},
TableSpecs => {
MySourceA => {
title => 'My Source Abba!',
title_multi => 'Abbas',
iconCls => 'icon-apple',
multiIconCls => 'icon-apples',
# ...
},
SourceB => {
display_column => 'foo',
columns => {
foo => {
title => 'Foo',
# ...
}
}
}
},
table_class => 'MyApp::Module::CustGridModule',
virtual_columns => {
# ...
}
}
DESCRIPTION
The RapidDbic plugin provides a very high-level, abstract configuration layer for initializing a structure of interfaces for accessing DBIC::Schema models for Catalyst/RapidApp. These interfaces are fully functional out-of-the-box, but also provide a robust base which can be configured and extended into various forms of custom applications.
RapidDbic itself simply assembles and configures other RapidApp plugins and modules into a useful, working combination without any fuss, while also providing configuration hooks into those sub-modules across different layers. This includes the TabGui plugin for the main interface and navigation structure, and sets of DBIC-aware modules such as grids, forms and trees.
This hooks into a very broad ecosystem of highly customizable and extendable modules which are still in the process of being fully documented... The unconfigured, default state resembles a database admin utility, with powerful CRUD features, query builder, batch modify forms, and so on.
RapidDbic is also designed to work with other, high-level plugins to access additional turn-key application-wide functionality, such as access and authorization with the AuthCore plugin and saved user-views with the NavCore plugin.
CONFIG
The only required config option is specifying at least one DBIC::Schema model to enable. This can be achieved either with the dbic_models
option in the plugin config key 'Plugin::RapidApp::RapidDbic'
within the main Catalyst app class/config, or by specifying a 'RapidDbic'
config key in the model class(es) itself (see SYNOPSIS).
The optional additional config options for each model are then divided into two main sections, grid_params
and TableSpecs
, which are each further divided into each source name in the DBIC schema.
grid_params
The grid_params section allows overriding the parameters to be supplied to the RapidApp module which is automatically built for each source (with a menu point for each in the navtree). By default, this is the grid-based module Catalyst::Plugin::RapidApp::RapidDbic::TableBase, but can be changed (with the table_class
config option) to any module extending a DBIC-aware RapidApp module (which are any of the modules based on the "DbicLink" ecosystem) which doesn't even necesarily need to be derived from a grid module at all...
For convenience, the special source name '*defaults'
can be used to set params for all sources at once.
The DbicLink modules configuration documentation is still in-progress.
TableSpecs
TableSpecs are extra schema metadata which can optionally be associated with each source/columns. These provide extra "hints" for how to represent the schema entities in different application interface contexts. TableSpec data is passive and is consumed by all DBIC-aware RapidApp Modules for building their default configuration(s).
For a listing of the different TableSpec data-points which are available, see the TableSpec documentation in the manual:
table_class
Specify a different RapidApp module class name to use for the source. The default is Catalyst::Plugin::RapidApp::RapidDbic::TableBase
. The grid_params
for each source are supplied to the constructor of this class to create the module instances (for each source).
virtual_columns
Automatically inject virtual columns via config into the sources... More documentation TDB.
In the meantime, see the virtual_column example in the Chinook Demo:
SEE ALSO
AUTHOR
Henry Van Styn <vanstyn@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by IntelliTree Solutions llc.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.