Catalyst::Plugin::RapidApp::RapidDbic - Instant web front-ends for DBIx::Class
To get started very quickly with a new app, see the RapidDbic helper for bootstrapping a new app in the manual:
RapidApp::Manual::Bootstrap
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 => { # ... } }
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.
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).
dbic_models
'Plugin::RapidApp::RapidDbic'
'RapidDbic'
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
TableSpecs
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...
table_class
For convenience, the special source name '*defaults' can be used to set params for all sources at once.
'*defaults'
The DbicLink modules configuration documentation is still in-progress.
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:
RapidApp::Manual::TableSpec
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).
Catalyst::Plugin::RapidApp::RapidDbic::TableBase
Automatically inject virtual columns via config into the sources... More documentation TDB.
In the meantime, see the virtual_column example in the Chinook Demo:
Chinook Demo - 2.5 - Virtual Columns
Chinook Demo (www.rapidapp.info)
RapidApp::Manual::RapidDbic
RapidApp::Manual::Plugins
Catalyst::Plugin::RapidApp
Catalyst::Plugin::RapidApp::TabGui
Catalyst::Plugin::RapidApp::NavCore
Catalyst
Henry Van Styn <vanstyn@cpan.org>
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.
To install RapidApp, copy and paste the appropriate command in to your terminal.
cpanm
cpanm RapidApp
CPAN shell
perl -MCPAN -e shell install RapidApp
For more information on module installation, please visit the detailed CPAN module installation guide.