NAME
DBIx::Class::LookupColumn::Auto - A dbic component for installing LookupColumn relations on a whole schema at once.
SYNOPSIS
 package MySchema; 
 __PACKAGE__->load_components( qw/LookupColumn::Auto/ );
 my @tables = __PACKAGE__->sources; # get all table names 
 
 my @candidates =  grep { ! /Type$/ } @tables;  # tables that do NOT end with Type
 my @lookups =  grep {  /Type$/ } @tables;      # tables that DO end with Type == the Lookup Tables !
 __PACKAGE__->add_lookups(
	targets => \@candidates, 
	lookups => \@lookups,
	
	# function that will generate the relation names: here we build it from the Lookup Table
	relation_name_builder => sub{
		my ( $class, %args) = @_;
		$args{lookup} =~ /^(.+)Type$/; # remove the end (Type) from the Lookup table name
		lc( $1 );
	},
	# function that gives the name of the column that holds the definitions/values: here it is always 'name'
	lookup_field_name_builder => sub { 'name' } 
 );
DESCRIPTION
This component automates the addition of the Lookup (see "Lookup Tables" in DBIx::Class::LookupColumn) relations to a whole set of tables.
Given a set of potential target tables (the tables on which to add the Lookup relations), and a set of Lookup tables, the component will select all the belongs_to relations defined in the target tables pointing to a Lookup table present in the set and add a Lookup relation automatically.
It is also possible to add accessors manuall by doing a copy/paste of the code diplayed with the verbose option (See add_lookups).
METHODS
add_lookups
__PACKAGE__->add_lookups( { targets => [], lookups => [], relation_name_builder? => sub {}, lookup_field_name_builder? => sub {}, verbose? => boolean } )
This will iterate through the set of targets tables on all belongs_to relations pointing to a table included in lookups and add a corresponding relation.
Arguments (hash keys) :
- targets
 - 
An ArrayRef of the names of the tables on which to detect and install the Lookup relations.
 - lookups
 - 
An ArrayRef of the names of the Lookup tables.
 - relation_name_builder?
 - 
Optional. FuncRef for building the accessors base name. By default the name of the Lookup table in small caps. Arguments (hash keys) : { target => ?, lookup => ?, foreign_key => ? }.
 - lookup_field_name_builder?
 - 
Optional. FuncRef for specifying the concerned column name in the Lookup table. By default the first varchar type column in the Lookup table.
 - verbose?
 - 
Optional. Boolean for displaying the code for adding a Lookup relation. Copy/paste it the right place of your code. By default set to false, then non-verbose.
 
AUTHORS
Karl Forner <karl.forner@gmail.com>
Thomas Rubattel <rubattel@cpan.org>
BUGS
Please report any bugs or feature requests to bug-dbix-class-lookupcolumn-auto at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DBIx-Class-LookupColumn-Auto. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc DBIx::Class::LookupColumn::Auto
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
http://rt.cpan.org/NoAuth/Bugs.html?Dist=DBIx-Class-LookupColumn-Auto
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
LICENCE AND COPYRIGHT
Copyright 2012 Karl Forner and Thomas Rubattel, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the terms as Perl itself.