Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.69 KB | None | 0 0
  1. #основной файл приложения
  2. has db => sub {
  3.       my $self = shift;
  4.       my $db_conf = $self->config('db');
  5. # можно любой dbi модуль, лучше Dbix::connector
  6.       state  $dbh = DBIx::Custom->connect(dsn => $db_conf->{dsn},
  7.           user => $db_conf->{db_user},
  8.           password => $db_conf->{db_pass},
  9.           option => {mysql_enable_utf8 => 1},
  10.           connector => 1);
  11.       return $dbh;
  12.     };
  13.  
  14. sub startup {}
  15. ...
  16. # хэлпер, по идее лучше сразу вынести в модуль
  17. #будет примерно таким
  18. sub register {
  19.   my ($plugin, $app) = @_;
  20.  
  21.   my $model = SimpleCRM::Model::CRM->new( dbh  => $app->db,
  22.                                          conf => $app->config);
  23.                                          
  24.   $app->helper( model  => sub { $model } );
  25.   $app->helper( dbh  => sub { shift->app->db } );
  26. }
  27.  
  28.  
  29. package SimpleCRM::Model::CRM;
  30.  
  31. use SimpleCRM::Model::CRM::User;
  32. ...
  33. # все модули для модели, в небольших проектах норм прописывать руками
  34. ...
  35.  
  36. has user => sub {
  37.   my $self = shift;
  38.   SimpleCRM::Model::CRM::User->new(dbh => $self->dbh, conf => $self->conf)
  39. };
  40.  
  41. # пример контроллера
  42. package SimpleCRM::Controller::Admin::User;
  43. use Mojo::Base 'Mojolicious::Controller';
  44.  
  45. sub users {
  46.   my $c = shift;
  47.   my $users = $c->model->user->list_users();
  48.   $c->render(json => {list => $users });
  49. }
  50.  
  51. # пример модели
  52. package SimpleCRM::Model::CRM::User;
  53. use Mojo::Base -base;
  54.  
  55. sub list_users
  56. {
  57.   my ($self, $params) = @_;
  58.   my $result = $self->dbh->select(table => 'sc_users');
  59.   return $result->all;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement