forked from pool/perl-Mojo-SQLite
automatic update OBS-URL: https://build.opensuse.org/request/show/445376 OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Mojo-SQLite?expand=0&rev=6
136 lines
5.1 KiB
RPMSpec
136 lines
5.1 KiB
RPMSpec
#
|
|
# spec file for package perl-Mojo-SQLite
|
|
#
|
|
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
Name: perl-Mojo-SQLite
|
|
Version: 1.003
|
|
Release: 0
|
|
%define cpan_name Mojo-SQLite
|
|
Summary: Tiny Mojolicious Wrapper for Sqlite
|
|
License: Artistic-2.0
|
|
Group: Development/Libraries/Perl
|
|
Url: http://search.cpan.org/dist/Mojo-SQLite/
|
|
Source0: http://www.cpan.org/authors/id/D/DB/DBOOK/%{cpan_name}-%{version}.tar.gz
|
|
Source1: cpanspec.yml
|
|
BuildArch: noarch
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
BuildRequires: perl
|
|
BuildRequires: perl-macros
|
|
BuildRequires: perl(DBD::SQLite) >= 1.50
|
|
BuildRequires: perl(DBI) >= 1.627
|
|
BuildRequires: perl(Module::Build::Tiny) >= 0.034
|
|
BuildRequires: perl(Module::Metadata)
|
|
BuildRequires: perl(Mojolicious) >= 6.14
|
|
BuildRequires: perl(Test::More) >= 0.88
|
|
BuildRequires: perl(URI) >= 1.69
|
|
BuildRequires: perl(URI::db) >= 0.15
|
|
BuildRequires: perl(URI::file) >= 4.21
|
|
Requires: perl(DBD::SQLite) >= 1.50
|
|
Requires: perl(DBI) >= 1.627
|
|
Requires: perl(Mojolicious) >= 6.14
|
|
Requires: perl(URI) >= 1.69
|
|
Requires: perl(URI::db) >= 0.15
|
|
Requires: perl(URI::file) >= 4.21
|
|
%{perl_requires}
|
|
|
|
%description
|
|
Mojo::SQLite is a tiny wrapper around DBD::SQLite that makes at
|
|
https://www.sqlite.org/ a lot of fun to use with the at https://mojolico.us
|
|
real-time web framework.
|
|
|
|
Database and statement handles are cached automatically, so they can be
|
|
reused transparently to increase performance. And you can handle connection
|
|
timeouts gracefully by holding on to them only for short amounts of time.
|
|
|
|
use Mojolicious::Lite;
|
|
use Mojo::SQLite;
|
|
|
|
helper sqlite => sub { state $sql = Mojo::SQLite->new('sqlite:test.db') };
|
|
|
|
get '/' => sub {
|
|
my $c = shift;
|
|
my $db = $c->sqlite->db;
|
|
$c->render(json => $db->query('select datetime("now","localtime") as now')->hash);
|
|
};
|
|
|
|
app->start;
|
|
|
|
In this example application, we create a 'sqlite' helper to store a
|
|
Mojo::SQLite object. Our action calls that helper and uses the method
|
|
Mojo::SQLite/"db" to dequeue a Mojo::SQLite::Database object from the
|
|
connection pool. Then we use the method Mojo::SQLite::Database/"query" to
|
|
execute an at http://www.postgresql.org/docs/current/static/sql.html
|
|
statement, which returns a Mojo::SQLite::Results object. And finally we
|
|
call the method Mojo::SQLite::Results/"hash" to retrieve the first row as a
|
|
hash reference.
|
|
|
|
All I/O and queries are performed synchronously. However, the "Write-Ahead
|
|
Log" journal is enabled for all connections, allowing multiple processes to
|
|
read and write concurrently to the same database file (but only one can
|
|
write at a time). See http://sqlite.org/wal.html for more information.
|
|
|
|
# Performed concurrently
|
|
my $pid = fork || die $!;
|
|
say $sql->db->query('select datetime("now","localtime") as time')->hash->{time};
|
|
exit unless $pid;
|
|
|
|
All cached database handles will be reset automatically if a new process
|
|
has been forked, this allows multiple processes to share the same
|
|
Mojo::SQLite object safely.
|
|
|
|
Any database errors will throw an exception as 'RaiseError' is
|
|
automatically enabled, so use 'eval' or Try::Tiny to catch them. This makes
|
|
transactions with Mojo::SQLite::Database/"begin" easy.
|
|
|
|
While passing a file path of ':memory:' (or a custom "dsn" with
|
|
'mode=memory') will create a temporary database, in-memory databases cannot
|
|
be shared between connections, so subsequent calls to "db" may return
|
|
connections to completely different databases. For a temporary database
|
|
that can be shared between connections and processes, pass a file path of
|
|
':temp:' to store the database in a temporary directory (this is the
|
|
default), or consider constructing a temporary directory yourself with
|
|
File::Temp if you need to reuse the filename. A temporary directory allows
|
|
SQLite to create at https://www.sqlite.org/tempfiles.html safely.
|
|
|
|
use File::Spec::Functions 'catfile';
|
|
use File::Temp;
|
|
use Mojo::SQLite;
|
|
my $tempdir = File::Temp->newdir; # Deleted when object goes out of scope
|
|
my $tempfile = catfile $tempdir, 'test.db';
|
|
my $sql = Mojo::SQLite->new->from_filename($tempfile);
|
|
|
|
%prep
|
|
%setup -q -n %{cpan_name}-%{version}
|
|
find . -type f ! -name \*.pl -print0 | xargs -0 chmod 644
|
|
|
|
%build
|
|
%{__perl} Build.PL --installdirs=vendor
|
|
./Build build --flags=%{?_smp_mflags}
|
|
|
|
%check
|
|
./Build test
|
|
|
|
%install
|
|
./Build install --destdir=%{buildroot} --create_packlist=0
|
|
%perl_gen_filelist
|
|
|
|
%files -f %{name}.files
|
|
%defattr(-,root,root,755)
|
|
%doc Changes CONTRIBUTING.md examples LICENSE README
|
|
|
|
%changelog
|