1 package DBIx::Class::ResultSourceProxy::View;
6 use base qw/DBIx::Class::ResultSourceProxy/;
8 use DBIx::Class::ResultSource::View;
10 __PACKAGE__->mk_classdata(view_class => 'DBIx::Class::ResultSource::View');
12 __PACKAGE__->mk_classdata('view_definition');
13 __PACKAGE__->mk_classdata('view_alias'); # FIXME: Doesn't actually do
16 sub _init_result_source_instance {
19 $class->mk_classdata('result_source_instance')
20 unless $class->can('result_source_instance');
22 my $view = $class->result_source_instance;
23 my $class_has_view_instance = ($view and $view->result_class eq $class);
24 return $view if $class_has_view_instance;
27 $view = $class->view_class->new({
29 result_class => $class,
35 $view = $class->view_class->new({
37 result_class => $class,
42 $class->result_source_instance($view);
44 if ($class->can('schema_instance')) {
45 $class =~ m/([^:]+)$/;
46 $class->schema_instance->register_class($class, $class);
54 DBIx::Class::ResultSourceProxy::View - provides a classdata view
55 object and method proxies
59 #optional, for deploy support
60 __PACKAGE__->view_definition('SELECT cdid, artist, title, year FROM foo');
62 __PACKAGE__->view('cd');
63 __PACKAGE__->add_columns(qw/cdid artist title year/);
64 __PACKAGE__->set_primary_key('cdid');
70 __PACKAGE__->add_columns(qw/cdid artist title year/);
72 Adds columns to the current class and creates accessors for them.
78 __PACKAGE__->view('view_name');
80 Gets or sets the view name.
85 my ($class, $view) = @_;
86 return $class->result_source_instance->name unless $view;
88 $view = $class->view_class->new({
89 $class->can('result_source_instance') ?
90 %{$class->result_source_instance||{}} : (),
92 result_class => $class,
97 $class->mk_classdata('result_source_instance')
98 unless $class->can('result_source_instance');
100 $class->result_source_instance($view);
102 if ($class->can('schema_instance')) {
103 $class =~ m/([^:]+)$/;
104 $class->schema_instance->register_class($class, $class);
106 return $class->result_source_instance->name;
111 if ($obj->has_column($col)) { ... }
113 Returns 1 if the class has a column of this name, 0 otherwise.
119 my $info = $obj->column_info($col);
121 Returns the column metadata hashref for a column. For a description of
122 the various types of column data in this hashref, see
123 L<DBIx::Class::ResultSource/add_column>
129 my @column_names = $obj->columns;
137 Matt S. Trout <mst@shadowcatsystems.co.uk>
141 You may distribute this code under the same terms as Perl itself.