NAME
App::MonM::Notifier::Store - monotifier store class
VERSION
Version 1.02
SYNOPSIS
use App::MonM::Notifier::Store;
my $store = App::MonM::Notifier::Store->new(
dsn => "DBI:mysql:database=monotifier;host=mysql.example.com",
user => "username",
password => "password",
set => [
"RaiseError 0",
"PrintError 0",
"mysql_enable_utf8 1",
],
expires => 3600*24*7,
maxtime => 300,
);
die($store->error) if $store->error;
DESCRIPTION
DBI interface for monotifier store. This module provides store methods
new
my $store = App::MonM::Notifier::Store->new(
dsn => "DBI:mysql:database=monotifier;host=mysql.example.com",
user => "username",
password => "password",
set => [
"RaiseError 0",
"PrintError 0",
"mysql_enable_utf8 1",
],
expires => 3600*24*7,
maxtime => 300,
);
Creates DBI object
- expires
-
Time in seconds of life of database record
- maxtime
-
Max time in seconds to sending one message
cleanup
my $st = $store->cleanup;
Removes permanently queue entities based on how old they are
dequeue
my $st = $store->dequeue(
id => 1,
);
Dequeues the element by setting success status (STATUS_SENT)
delById
$store->delById($id) or die($store->error);
Delete record by id
dsn
my $dsn = $store->dsn;
Returns DSN string of current database connection
enqueue
$store->enqueue(
to => $user,
channel => $ch_name,
subject => $subject,
message => $message,
attributes => $ch, # Channel attributes
) or die($store->error);
Adds a new element at the end of the current queue and returns queue element ID
error
my $error = $store->error;
Returns error message
my $error = $store->error( "Error message" );
Sets error message if argument is provided.
getById
my %data = $store->getById($id);
Returns data from database by id
getAll
my @table = $store->getAll();
my @table_100 = $store->getAll(100);
Returns data from database with limit supporting
is_sqlite
print $store->is_sqlite ? "Is SQLite" : "Is not SQLite"
Returns true if type of current database is SQLite
ping
$store->ping ? 'OK' : 'Database session is expired';
Checks the connection to database
requeue
my $st = $store->requeue(
id => 1,
code => 2,
error => "My Error",
);
Requeue entities that have been retrieved for processing early; sets status to STATUS_FAIL
retrieve
my $entity = $store->retrieve(STATUS_FAIL);
Retrieves the next entity from the queue and returns it as hashref or undef if no entity
serializer
my $serializer = $store->serializer;
Returns serializer object
purge
$store->purge or die($store->error);
Delete all records
DDL
CREATE TABLE IF NOT EXISTS monotifier (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE,
`to` CHAR(255), -- Recipient name
`channel` CHAR(255), -- Recipient channel
`subject` TEXT, -- Message subject
`message` TEXT, -- Message content (BASE64)
`attributes` TEXT, -- Message attributes (JSON)
`published` BIGINT(20), -- The publication time (unixtime)
`scheduled` BIGINT(20), -- The scheduled time (unixtime)
`expired` BIGINT(20), -- The expiration time (unixtime)
`sent` BIGINT(20), -- The send time
`attempt` INTEGER DEFAULT 0, -- Count of failed attempts
`status` CHAR(32), -- Status of transaction
`errcode` INT(11), -- Error code
`errmsg` TEXT -- Error message
)
ERRORCODES
0 -- No errors found
1 -- Error of the notifier level (notify method)
2 -- Error of the notifier level (remind method)
255 -- Error of the cleanup level
SEE ALSO
AUTHOR
Serż Minus (Sergey Lepenkov) https://www.serzik.com <abalama@cpan.org>
COPYRIGHT
Copyright (C) 1998-2022 D&D Corporation. All Rights Reserved
LICENSE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See LICENSE
file and https://dev.perl.org/licenses/