File: User.pm

package info (click to toggle)
libhtml-formfu-model-dbic-perl 0.06000-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,252 kB
  • ctags: 147
  • sloc: perl: 2,112; makefile: 2
file content (68 lines) | stat: -rw-r--r-- 1,506 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package MySchema::User;
use strict;
use warnings;

use base 'DBIx::Class';

__PACKAGE__->load_components(qw/ Core /);

__PACKAGE__->table("user");

__PACKAGE__->add_columns(
    id     => { data_type => "INTEGER", is_nullable => 0 },
    master => { data_type => "INTEGER", is_nullable => 1 },
    name   => { data_type => "TEXT", is_nullable => 0 },
    title  => { data_type => "TEXT", is_nullable => 1 },
);

__PACKAGE__->set_primary_key("id");

__PACKAGE__->belongs_to( master => 'MySchema::Master', 'id' );

__PACKAGE__->has_many( addresses => 'MySchema::Address', 'user' );

__PACKAGE__->has_many( user_bands => 'MySchema::UserBand', 'user' );

__PACKAGE__->has_many( hasmanys => 'MySchema::HasMany', 'user' );

__PACKAGE__->many_to_many( bands => 'user_bands', 'band' );

sub fullname {
    my $self = shift;

    if (@_) {
        my $fullname = shift;
        
        my $match = qr/
            (?: ( \w+ ) \s+ )?
            ( .* )
            /x;
        
        my ($title, $name) = $fullname =~ $match;
        
        $self->set_column( 'title', $title );
        $self->set_column( 'name', $name );
        
        return $fullname;
    }
    
    my $title = $self->get_column('title');
    my $name  = $self->get_column('name');
    
    return join ' ', grep {defined} $title, $name;
}

sub foo {
    my ($self) = @_;
    
    my $row = $self->find_or_new_related( 'hasmanys', { key => 'foo' } );
    
    if ( @_ > 1 ) {
        $row->update(@_);
    }
    
    return $row;
}

1;