1 package Newslash::Model::Base;
16 return unless my $flag = shift;
18 if ($flag eq '-base') {
20 } elsif ($flag eq '-strict') {
27 push @{"${caller}::ISA"}, $flag;
30 $_->import for qw(strict warings utf8);
31 feature->import(':5.10');
39 my ($self, $table) = @_;
41 my $dbh = $self->connect_db;
42 my $DB_NAME = $self->{options}->{Database}->{name};
45 SELECT * FROM information_schema.TABLES
46 WHERE TABLE_SCHEMA = ?
49 my $sth = $dbh->prepare($sql);
50 $sth->execute($DB_NAME, $table);
51 my $rs = $sth->fetchall_arrayref({});
60 my ($class, $options) = @_;
61 bless {options => $options, _error => undef}, $class;
65 my ($self, $error, $errorno) =@_;
66 $self->{_error} = $error;
67 $self->{_errorno} = $errorno if $errorno;
70 my ($self, $errorno) =@_;
71 $self->{_errorno} = $errorno;
76 return $self->{_error};
81 return $self->{_errorno};
86 my $options = shift || {};
88 my $DB_HOST = $self->{options}->{Database}->{host};
89 my $DB_NAME = $self->{options}->{Database}->{name};
90 my $DB_USER = $self->{options}->{Database}->{user};
91 my $DB_PASSWORD = $self->{options}->{Database}->{password};
93 my $settings = 'mysql_read_default_group=libmysqlclient;mysql_read_default_file=/etc/mysql/my.cnf';
95 mysql_enable_utf8 => 1,
96 ShowErrorStatement => 1,
97 Callbacks => { # hack to use utf8mb4. see http://d.hatena.ne.jp/hirose31/20141028/1414496347
99 shift->do('SET NAMES utf8mb4');
106 my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST;$settings", $DB_USER, $DB_PASSWORD, $attr);
111 sub new_instance_of {
112 my ($self, $class) = @_;
113 return $class->new($self->{options});
118 my $r = Redis->new(server => $self->{options}->{KeyValueStore}->{host});
126 if ($self->{options}->{Logger}) {
127 return $self->{options}->{Logger};
129 # return dummy object
144 $self->logger->warn($val);