OSDN Git Service

Mode::Users: refactor select function
authorhylom <hylom@users.sourceforge.jp>
Mon, 21 Nov 2016 10:39:16 +0000 (19:39 +0900)
committerhylom <hylom@users.sourceforge.jp>
Mon, 21 Nov 2016 10:39:16 +0000 (19:39 +0900)
src/newslash_web/lib/Newslash/Model/Users.pm

index 1935075..706a6f9 100644 (file)
@@ -31,26 +31,6 @@ sub authentification {
     return undef;
 }
 
-sub _get {
-  my ($self, $key, $value) = @_;
-  my $dbh = $self->connect_db;
-  my $sql = "SELECT * FROM users WHERE $key = ?";
-  my $sth = $dbh->prepare($sql);
-
-  $sth->execute($value);
-
-  my $rs = $sth->fetchall_arrayref(+{});
-
-  $sth->finish;
-  $dbh->disconnect();
-
-  if (@$rs == 0) {
-    return undef;
-  }
-
-  return $rs;
-}
-
 sub anonymous_user {
     my $self = shift;
     return  $self->select(uid => 1);
@@ -88,26 +68,27 @@ sub select {
 
     my $type = $params{target} || 'user';
 
+    # select from `users` table
     if ($type eq 'user') {
         my $user;
         if (exists $params{nickname}) {
-            my $u = $self->_get(nickname => $params{nickname});
+            my $u = $self->_select("users", nickname => $params{nickname});
             $user = $u->[0] if $u;
         }
         elsif (exists $params{uid}) {
-            my $u = $self->_get(uid => $params{uid});
+            my $u = $self->_select("users", uid => $params{uid});
             $user = $u->[0] if $u;
         }
         elsif (exists $params{matchname}) {
-            my $u = $self->_get(matchname => $params{matchname});
+            my $u = $self->_select("users", matchname => $params{matchname});
             $user = $u->[0] if $u;
         }
         elsif (exists $params{email}) {
-            my $u = $self->_get(realemail => $params{email});
+            my $u = $self->_select("users", realemail => $params{email});
             $user = $u->[0] if $u;
         }
         elsif (exists $params{author}) {
-            $user = $self->_get(author => $params{author});
+            $user = $self->_select("users", author => $params{author});
         }
 
         if ($user) {
@@ -116,110 +97,47 @@ sub select {
         return;
     }
 
+    # select from other table
+    my $ret;
     if ($type eq 'acl') {
-        my $ret;
         if (exists $params{uid}) {
-            $ret = $self->_acl(uid => $params{uid});
+            $ret = $self->_select("users_acl", uid => $params{uid});
         }
-        return $ret;
     }
 
     if ($type eq 'info') {
-        my $ret;
         if (exists $params{uid}) {
-            $ret = $self->_info(uid => $params{uid});
+            $ret = $self->_select("users_info", uid => $params{uid});
         }
-        return $ret;
     }
 
     if ($type eq 'comments') {
-        my $ret;
         if (exists $params{uid}) {
-            $ret = $self->_comments(uid => $params{uid});
+            $ret = $self->_select("users_comments", uid => $params{uid});
         }
-        return $ret;
     }
 
     if ($type eq 'param') {
-        my $ret;
         if (exists $params{uid}) {
-            $ret = $self->_param(uid => $params{uid});
+            $ret = $self->_select("users_param", uid => $params{uid});
         }
-        return $ret;
     }
-
-    return;
+    return if !$ret;
+    return $ret->[0];
 }
 
-sub _select_rows {
-    my ($self, $sql, $value) = @_;
-
+sub _select {
+    my ($self, $table, $key, $value) = @_;
+    my $sql = "SELECT * FROM $table WHERE $key = ?";
     my $dbh = $self->connect_db;
     my $sth = $dbh->prepare($sql);
     $sth->execute($value);
     my $rs = $sth->fetchall_arrayref(+{});
-
-    $sth->finish;
     $dbh->disconnect();
 
     return $rs;
 }
 
-sub _acl {
-    my ($self, $key, $value) = @_;
-    my $sql = <<"EOSQL";
-SELECT * FROM users_acl
-  WHERE $key = ?
-EOSQL
-    my $rs = $self->_select_rows($sql, $value);
-    return if (@$rs == 0);
-
-    my $ret = $rs->[0];
-    return $ret;
-}
-
-sub _info {
-    my ($self, $key, $value) = @_;
-    my $sql = <<"EOSQL";
-SELECT * FROM users_info
-  WHERE $key = ?
-EOSQL
-    my $rs = $self->_select_rows($sql, $value);
-    return if (@$rs == 0);
-
-    my $ret = $rs->[0];
-    return $ret;
-}
-
-sub _comments {
-    my ($self, $key, $value) = @_;
-    my $sql = "SELECT * FROM users_comments WHERE $key = ?";
-    my $rs = $self->_select_rows($sql, $value);
-    return if (@$rs == 0);
-
-    my $ret = $rs->[0];
-    return $ret;
-}
-
-sub _param {
-    my ($self, $key, $value) = @_;
-    my $sql = <<"EOSQL";
-SELECT param_id, name, value FROM users_param
-  WHERE $key = ?
-EOSQL
-
-    my $dbh = $self->connect_db;
-    my $sth = $dbh->prepare($sql);
-    $sth->execute($value);
-    my $rs = $sth->fetchall_hashref('name');
-
-    $sth->finish;
-    $dbh->disconnect();
-
-    return $rs;
-}
-
-
 #========================================================================
 
 =head2 _get_salt
@@ -636,4 +554,5 @@ sub _update_users_info_add {
     $dbh->disconnect;
     return 1;
 }
+
 1;