1 package Catalyst::Helper::Model::DBIC::SchemaLoader;
9 Catalyst::Helper::Model::DBIC::SchemaLoader - Helper for AutoLoaded DBIC Schema Models
13 script/myapp_create.pl model Foo DBIC::SchemaLoader [ connect info arguments ]
16 Foo is the short name for the Model class being generated
17 connect_info arguments are the same as what DBIx::Class::Schema::connect
18 expects, and are storage_type-specific. For DBI-based storage, these
19 arguments are the dsn, username, password, and connect options,
22 =head1 TYPICAL EXAMPLE
24 script/myapp_create.pl model Foo DBIC::SchemaLoader dbi:mysql:foodb myuname mypass '{ AutoCommit => 1 }'
28 This helper generates two classes:
30 First, it generates a L<DBIx::Class::Schema::Loader> class at
31 F<lib/MyApp/SchemaLoader/Foo.pm> based on your supplied dsn/user/pass.
33 Then, it generates a L<Catalyst::Model::DBIC::Schema> at
34 F<lib/MyApp/M/Foo.pm>, which references the above-generated loader.
36 Models generated by this Helper require the seperate package
37 L<DBIx::Class::Schema::Loader> to be installed. It is on the recommended
38 list for this package, but is not required for installation.
47 my ($self, $helper, @connect_info) = @_;
50 $_ = qq{'$_'} if $_ !~ /^\s*[[{]/;
53 $helper->{loader_class} = $helper->{class};
54 $helper->{loader_class} =~ s/\:\:M(?:odel)?\:\:/::SchemaLoader::/;
55 my @loader_parts = split(/\:\:/, $helper->{loader_class});
56 my $loader_file_part = pop @loader_parts;
58 my $loader_dir = File::Spec->catfile( $helper->{base}, 'lib', @loader_parts );
59 my $loader_file = File::Spec->catfile( $loader_dir, $loader_file_part . '.pm' );
61 $helper->mk_dir($loader_dir);
62 $helper->{connect_info} = \@connect_info;
64 $helper->mk_dir( $loader_dir );
65 $helper->render_file( 'loaderclass', $loader_file );
68 my $file = $helper->{file};
69 $helper->render_file( 'compclass', $file );
74 General Catalyst Stuff:
76 L<Catalyst::Manual>, L<Catalyst::Test>, L<Catalyst::Request>,
77 L<Catalyst::Response>, L<Catalyst::Helper>, L<Catalyst>,
79 Stuff related to DBIC and this Model style:
81 L<DBIx::Class>, L<DBIx::Class::Schema>,
82 L<DBIx::Class::Schema::Loader>, L<Catalyst::Model::DBIC::Schema>,
83 L<Catalyst::Helper::Model::DBIC::Schema>
87 Brandon L Black, C<blblack@gmail.com>
91 This library is free software, you can redistribute it and/or modify
92 it under the same terms as Perl itself.
103 package [% loader_class %];
106 use base qw/DBIx::Class::Schema::Loader/;
108 __PACKAGE__->load_from_connection(
110 [% FOREACH arg = connect_info %][% arg %],
119 [% loader_class %] - Loader-generated DBIx::Class::Schema class
127 Generated by L<Catalyst::Model::DBIC::Schema> for use in L<[% class %]>
135 This library is free software, you can redistribute it and/or modify
136 it under the same terms as Perl itself.
146 use base 'Catalyst::Model::DBIC::Schema';
149 schema_class => '[% loader_class %]',
154 [% class %] - Catalyst DBIC Schema Model
162 L<Catalyst::Model::DBIC::Schema> Model using L<DBIx::Class::Schema::Loader>
163 generated Schema: L<[% loader_class %]>
171 This library is free software, you can redistribute it and/or modify
172 it under the same terms as Perl itself.