OSDN Git Service

Eventd: add 'prioritty' column to ns_events table
authorhylom <hylom@users.sourceforge.jp>
Wed, 31 Oct 2018 10:12:15 +0000 (19:12 +0900)
committerhylom <hylom@users.sourceforge.jp>
Wed, 31 Oct 2018 10:12:15 +0000 (19:12 +0900)
src/newslash_web/lib/Newslash/Model/Events.pm
src/newslash_web/lib/Newslash/Plugin/EventQue.pm

index 1bd5239..0e466d4 100644 (file)
@@ -15,7 +15,7 @@ sub key_definition {
             timestamp => "created_timestamp",
             other => [qw(event_type event_subtype
                          related_id source_user_id
-                         active result)],
+                         priority active result)],
             aliases => { event_id => "id",
                          create_time => "created_timestamp",
                        }
@@ -40,6 +40,7 @@ CREATE TABLE IF NOT EXISTS $table_name (
   related_id        mediumint(8) unsigned,
   source_user_id    mediumint(8) unsigned,
   created_timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  priority          tinyint(4)           DEFAULT '0',
   active            tinyint(4)           NOT NULL DEFAULT '1',
   result            tinyint(4)
 ) DEFAULT CHARSET=utf8mb4
@@ -74,15 +75,16 @@ sub create {
     my $table_name = EVENTS_TABLE_NAME;
     my $sql = <<"EOSQL";
 INSERT INTO $table_name
-    (event_type, event_subtype, related_id, source_user_id, active)
+    (event_type, event_subtype, related_id, source_user_id, priority, active)
   VALUES
-    (?,          ?,             ?,          ?,              ?)
+    (?,          ?,             ?,          ?,              ?,        ?)
 EOSQL
 
     my @values = ($event_type,
                   $params->{event_subtype},
                   $params->{related_id},
                   $params->{source_user_id},
+                  $params->{priority},
                   defined $params->{active} ? $params->{active} : 1);
     my $dbh = $self->connect_db;
     my $rs = $dbh->do($sql, undef, @values);
@@ -137,6 +139,10 @@ sub update {
         push @cl, "result = ?";
         push @val, $params->{result};
     }
+    if (defined $params->{priority}) {
+        push @cl, "priority = ?";
+        push @val, $params->{priority};
+    }
     my $set_clause = join(", ", @cl);
     return if !$set_clause;
     push @val, $id;
@@ -176,7 +182,10 @@ sub oldest {
 sub fetch {
     my ($self, $max_count) = @_;
     $max_count ||= 10;
-    my $rs = $self->select(order_by => "created_timestamp", limit => $max_count, active => 1);
+    my $rs = $self->select(order_by => { DESC => "priority",
+                                         DESC => "created_timestamp" },
+                           limit => $max_count,
+                           active => 1);
     if ($rs) {
         return $rs;
     }
index 5d20878..6194030 100644 (file)
@@ -11,13 +11,15 @@ sub register {
 
 sub emit {
     my $self = shift;
-    my ($type, $sub_type, $uid, $id) = @_;
+    my ($type, $sub_type, $uid, $id, $priority) = @_;
     my $events = $self->{app}->model('events');
 
     my $rs = $events->create(event_type => $type,
                              event_subtype => $sub_type,
                              related_id => $id,
-                             source_user_id => $uid);
+                             source_user_id => $uid,
+                             priority => $priority || 0,
+                            );
     if (!$rs) {
         $self->{app}->log->warn("event create failed: $type/$sub_type ($id, $uid)");
     }