From c40c9084d9eeed49c3b4e205b07851b80ef84c16 Mon Sep 17 00:00:00 2001 From: hylom Date: Mon, 9 Oct 2017 03:03:52 +0900 Subject: [PATCH] * Model::WebMessages: fix select(), add hard_delete() --- src/newslash_web/lib/Newslash/Model/WebMessages.pm | 48 +++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/newslash_web/lib/Newslash/Model/WebMessages.pm b/src/newslash_web/lib/Newslash/Model/WebMessages.pm index c5394aaa..d542fba3 100644 --- a/src/newslash_web/lib/Newslash/Model/WebMessages.pm +++ b/src/newslash_web/lib/Newslash/Model/WebMessages.pm @@ -33,6 +33,9 @@ sub select { my $uid = $params->{user} || $params->{uid}; my $from_uid = $params->{fuser} || $params->{from_uid}; + my $id = $params->{id}; + my $keys = [qw(id user fuser code updated readed date)]; + my $unique = 0; if ($uid) { $where_clause = "message_web.user = ?"; @@ -42,6 +45,11 @@ sub select { $where_clause = "message_web.fuser = ?"; push @q_args, $from_uid; } + elsif ($id) { + $where_clause = "message_web.id = ?"; + push @q_args, $id; + $unique = 1; + } if ($where_clause) { $where_clause = "WHERE $where_clause"; }; @@ -51,6 +59,9 @@ sub select { push @q_args, @$values; } + my ($order_by_clause, $values) = $self->build_order_by_clause(keys => $keys, + params => $params); + my $sql = <<"EOSQL"; SELECT message_web.*, message_web_text.*, @@ -69,6 +80,11 @@ EOSQL $sth->execute(@q_args); my $rs = $sth->fetchall_arrayref({}); $self->disconnect_db; + + return if !$rs; + if ($unique) { + return $rs->[0]; + } return $rs; } @@ -77,7 +93,6 @@ sub create { return if $self->check_readonly; return if (!$uid || !$title || !$body || !$code); $options ||= {}; - my $f_uid = $options->{from_uid}; my $sql = <<"EOSQL"; INSERT INTO message_web @@ -110,4 +125,35 @@ EOSQL return $id; } +sub hard_delete { + my $self = shift; + my $params = {@_}; + + my $id = $params->{id}; + return if !$id; + + my $sql = <<"EOSQL"; +DELETE FROM message_web WHERE id = ? +EOSQL + + my $dbh = $self->start_transaction; + my $rs = $dbh->do($sql, undef, $id); + if (!$rs) { + $self->rollback; + return; + } + + $sql = <<"EOSQL"; +DELETE FROM message_web_text WHERE id = ? +EOSQL + $rs = $dbh->do($sql, undef, $id); + if (!$rs) { + $self->rollback; + return; + } + + $self->commit; + return 1; +} + 1; -- 2.11.0