Expense-Tracker
view release on metacpan or search on metacpan
lib/ExpenseTracker/Controllers/Base.pm view on Meta::CPAN
package ExpenseTracker::Controllers::Base;
{
$ExpenseTracker::Controllers::Base::VERSION = '0.008';
}
{
$ExpenseTracker::Controllers::Base::VERSION = '0.008';
}
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::JSON;
use Mojo::Util;
use DateTime;
use DBIx::Class::ResultClass::HashRefInflator;
use Lingua::EN::Inflect qw/PL/;
sub new{
my $self = shift;
my $obj = $self->SUPER::new(@_);
$obj->_after_init();
return $obj;
}
sub create{
my $self = shift;
$self->_before_create( @_ );
my $result = $self->app->model
->resultset( $self->{resource} )
->create( $self->{_payload} );
return $self->render_json( $result->{_column_data} );
}
sub update{
my $self = shift;
my $result_rs = $self->app->model
->resultset( $self->{resource} )
->search_rs(
{ id => $self->param('id') },
);
return $self->render_not_found if ( scalar( ( $result_rs->all ) ) == 0 );
$result_rs->update_all( $self->{_payload} );
$result_rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
my @result = $result_rs->all();
return $self->render_json( @result );
}
sub list{
my $self = shift;
my $result = $self->app->model
->resultset( $self->{resource} )
->search_rs;
$result->result_class('DBIx::Class::ResultClass::HashRefInflator');
#TODO: paging for the records
return $self->render_json( [ $result->all() ] );
}
sub show{
my $self = shift;
my $result = $self->app->model
->resultset( $self->{resource} )
->search_rs(
{ id => $self->param('id') },
{ result_class => 'DBIx::Class::ResultClass::HashRefInflator' },
)
->first;
return $self->render_not_found if ( ref $result eq 'HASHREF' );
return $self->render_json( $result );
}
sub remove{
my $self = shift;
my $result_rs = $self->app->model
->resultset( $self->{resource} )
->search_rs(
{ id => $self->param('id') },
);
return $self->render_not_found if ( scalar( ( $result_rs->all ) ) == 0 );
$result_rs->delete_all;
( run in 2.517 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )