OSDN Git Service

fix db begin,commit.rollback handling
authorISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
Wed, 24 Oct 2012 10:29:02 +0000 (19:29 +0900)
committerISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
Wed, 24 Oct 2012 10:29:02 +0000 (19:29 +0900)
mubot4fb.pl

index 3912d49..5fb33f4 100755 (executable)
@@ -180,6 +180,21 @@ sub search_lastpost_by_submitter {
        return $ret;
 }
 
+sub commit {
+       my ($me) = @_;
+       $me->{dbh}->commit;
+}
+
+sub rollback {
+       my ($me) = @_;
+       $me->{dbh}->rollback;
+}
+
+sub begin {
+       my ($me) = @_;
+       $me->{dbh}->begin_work;
+}
+
 1;
 package Mubot4FB;
 
@@ -187,7 +202,6 @@ use strict;
 use utf8;
 
 use base 'Bot::BasicBot';
-use DBI qw/:sql_types/;
 use POSIX 'strftime';
 
 use Data::Dumper;
@@ -205,6 +219,8 @@ sub init {
        my ($me) = @_;
        $me->{fb} = Mubot4FB::FB->new($me->{cfg});
        $me->{db} = Mubot4FB::DB->new($me->{cfg});
+       $me->misc_init;
+       return 1;
 }
 
 sub _format_submit {
@@ -280,19 +296,19 @@ sub _remove {
        my ($me, $args, $post_id)  =@_;
        my ($resp_msg, $resp);
 
-       $me->{dbh}->begin_work;
+       $me->{db}->begin;
        if ($resp = $me->{db}->remove({fb_post_id => $post_id, submitter => $args->{who}})) {
                # fb 側のエントリを削除しないといけない
                if ($me->{fb}->remove($post_id)) {
-                       $me->{dbh}->commit;
+                       $me->{db}->commit;
                        $resp_msg = $args->{who} . ': 削除しました ' . $me->{fb}->post_uri($post_id);
                } else {
+                       $me->{db}->rollback;
                        $resp_msg = $args->{who} . ': 削除に失敗しましたよ? ' . $me->{fb}->post_uri($post_id);
-                       $me->{dbh}->rollback;
                }
        } else {
+               $me->{db}->rollback;
                $resp_msg = $args->{who} . ': そんな投稿ないよ? ' . $me->{fb}->post_uri($post_id);
-               $me->{dbh}->rollback;
        }
        return $resp_msg;
 }