File Coverage

blib/lib/HTML/Shakan/Model/Teng.pm
Criterion Covered Total %
statement 32 33 96.9
branch 4 4 100.0
condition n/a
subroutine 7 8 87.5
pod 4 4 100.0
total 47 49 95.9


line stmt bran cond sub pod time code
1             package HTML::Shakan::Model::Teng;
2 1     1   111329 use strict;
  1         33  
  1         24  
3 1     1   6 use warnings;
  1         2  
  1         41  
4 1     1   5 use Mouse;
  1         2  
  1         8  
5             with 'HTML::Shakan::Role::Model';
6              
7             sub fill {
8 1     1 1 10 my ($self, $row) = @_;
9 1         8 my $columns = $row->get_columns;
10 1         38 while (my ($k, $v) = each %$columns) {
11 2         15 $self->form->fillin_params->{$k} = $v;
12             }
13             }
14              
15             sub create {
16 1     1 1 588 my ($self, $model, $name) = @_;
17 1         3 my $row = {};
18 1         4 my $params = $self->form->params();
19 1         3 for my $column (@{ $model->schema->get_table($name)->columns() }) {
  1         6  
20 2 100       21 next unless exists $params->{$column};
21 1         4 $row->{$column} = $params->{$column};
22             }
23 1         5 $model->insert($name => $row);
24             }
25              
26 0     0 1 0 sub insert { shift->create(@_) }
27              
28             sub update {
29 1     1 1 608 my ($self, $row) = @_;
30 1         4 my $dat = {};
31 1         4 my $columns = $row->get_columns;
32 1         32 my $params = $self->form->params();
33 1         4 for my $column (keys %$columns) {
34 2 100       8 next unless exists $params->{$column};
35 1         3 $dat->{$column} = $params->{$column};
36             }
37 1         5 $row->update($dat);
38             }
39              
40 1     1   659 no Mouse;
  1         2  
  1         6  
41             __PACKAGE__->meta->make_immutable;
42             __END__
43              
44             =head1 NAME
45              
46             HTML::Shakan::Model::Teng - Teng binding for HTML::Shakan
47              
48             =head1 SYNOPSIS
49              
50             # create form object
51             my $form = HTML::Shakan->new(
52             request => CGI->new(),
53             fields => [
54             TextField(
55             name => 'foo',
56             ),
57             ],
58             model => HTML::Shakan::Model::Teng->new()
59             );
60              
61             # fillin_form
62             $form->model->fill($row);
63              
64             # insert
65             $form->model->create($teng => $table);
66              
67             # update
68             $form->model->update($row);
69              
70             =head1 DESCRIPTION
71              
72             This is L<Teng> binding for L<HTML::Shakan>.You can easy to
73             insert/fill/update by L<HTML::Shakan>.
74              
75             =head1 METHODS
76              
77             =over 4
78              
79             =item C<< $form->model->fill($row); >>
80              
81             fill the $row data to form.$row is instance of row class of Teng.
82              
83             =item C<< my $row = $form->model->create($teng, $table); >>
84              
85             insert form data to $table.
86              
87             =item C<< my $row = $form->model->insert($teng, $table); >>
88              
89             insert method is synonym of create method.
90              
91             =item C<< $form->model->update($row); >>
92              
93             update C<$row> by form data.
94              
95             =back
96              
97             =head1 SEE ALSO
98              
99             L<Teng>, L<HTML::Shakan>
100              
101             =cut
102