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",
}
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
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);
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;
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;
}
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)");
}