NAME
MToken::Store - MToken store class
VERSION
Version 1.00
SYNOPSIS
use MToken::Store;
my $store = MToken::Store->new(
file => "/tmp/test.db",
attributes => "RaiseError=0; PrintError=0; sqlite_unicode=1",
do_init => 1, # Need to try initialize the db
);
my $store = MToken::Store->new(
dsn => "DBI:mysql:database=MToken;host=mysql.example.com",
user => "username",
password => "password",
set => [
"RaiseError 0",
"PrintError 0",
"mysql_enable_utf8 1",
],
);
die($store->error) unless $store->status;
DESCRIPTION
This module provides store methods.
SQLITE DDL
CREATE TABLE "mtoken" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
"file" CHAR(256) NOT NULL UNIQUE,
"size" INTEGER NOT NULL,
"mtime" INTEGER NOT NULL,
"checksum" CHAR(64) DEFAULT NULL,
"tags" CHAR(256) DEFAULT NULL,
"subject" CHAR(1024) DEFAULT NULL,
"content" TEXT DEFAULT NULL
);
MYSQL DDL
CREATE DATABASE `mtoken` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
CREATE TABLE IF NOT EXISTS `mtoken` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`file` VARCHAR(256) COLLATE utf8_bin NOT NULL, -- File name
`size` INT(11) NOT NULL, -- File size
`mtime` INT(11) NOT NULL, -- Unixtime value of modified time (mtime)
`checksum` VARCHAR(64) NOT NULL, -- Checksum (MD5/SHA1/SHA256)
`tags` VARCHAR(256) DEFAULT NULL, -- Tags
`subject` VARCHAR(1024) DEFAULT NULL, -- Subject
`content` TEXT COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `file` (`file`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
POSTGRESQL DDL
CREATE TABLE IF NOT EXISTS `mtoken` (
`id` INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
`file` CHAR(256) COLLATE utf8_bin NOT NULL UNIQUE,
`size` INTEGER NOT NULL,
`mtime` INTEGER NOT NULL,
`checksum` CHAR(64) DEFAULT NULL,
`tags` CHAR(256) DEFAULT NULL,
`subject` CHAR(1024) DEFAULT NULL,
`content` TEXT COLLATE utf8_bin DEFAULT NULL
);
METHODS
new
my $store = MToken::Store->new(
file => "/tmp/test.db",
attributes => "RaiseError=0; PrintError=0; sqlite_unicode=1",
do_init => 1, # Need to try initialize the db
);
# ... or MySQL:
my $store = MToken::Store->new(
dsn => "DBI:mysql:database=mtoken;host=mysql.example.com",
user => "username",
password => "password",
set => [
"RaiseError 0",
"PrintError 0",
"mysql_enable_utf8 1",
],
);
Creates DBI object
add
$store->add(
file => "test.txt",
size => 1024,
mtime => 1590000000,
checksum => "1a6f4a41ae8eec2da84dbfa48636e02e33575dbd",
tags => "test, example",
subject => "Test file for example",
content => "...Content of the file...",
) or die($store->error);
Add new recored
count
print $store->count();
Returns count of records
del
$store->del("test.txt") or die($store->error);
Delete record by filename
$store->del(1) or die($store->error);
Delete record by record id
dsn
my $dsn = $store->dsn;
Returns DSN string of current database connection
error
my $error = $store->error;
Returns error message
my $status = $store->error( "Error message" );
Sets error message if argument is provided. This method in "set" context returns status of the operation as status() method.
file
my $file = $store->file;
Returns the file of SQLite database
get
my %data = $store->get("test.txt");
Returns data from database by filename
my %data = $store->get(1);
Returns data from database by record id
getall
my @table = $store->getall();
my @table_100 = $store->getall(100); # row_count
my @table_100 = $store->getall(100, 100); # offset, row_count
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
set
$store->set(
file => "test.txt",
size => 1024,
mtime => 1590000000,
checksum => "1a6f4a41ae8eec2da84dbfa48636e02e33575dbd",
tags => "test, example",
subject => "Test file for example",
content => "...New content of the file...",
) or die($store->error);
Update recored by document number
$store->set(
id => 1,
file => "test.txt",
size => 1024,
mtime => 1590000000,
checksum => "1a6f4a41ae8eec2da84dbfa48636e02e33575dbd",
tags => "test, example",
subject => "Test file for example",
content => "...New content of the file...",
) or die($store->error);
Update recored by record id
status
my $status = $store->status;
my $status = $store->status( 1 ); # Sets the status value and returns it
Get/set BOOL status of the operation
truncate
$store->truncate or die($store->error);
Delete all records
HISTORY
See Changes
file
TO DO
See TODO
file
BUGS
* none noted
SEE ALSO
AUTHOR
Serż Minus (Sergey Lepenkov) http://www.serzik.com <abalama@cpan.org>
COPYRIGHT
Copyright (C) 1998-2021 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/