Mojolicious::Plugin::Nour::Database - Adds an easy to use database handle to your mojo app.
version 0.09
Somewhere in your startup routine, include something like this:
$self->plugin( 'Mojolicious::Plugin::Nour::Database' );
Then from your controllers, you can do things like this:
sub list { my $self = shift; my $list = $self->db->query( qq| select l.language_code id , l.unicode name_unicode , l.english name_english , l.direction from content.resource r join i18n.language l using ( language_code ) group by l.language_code, l.unicode, l.english, l.direction order by l.language_code | )->hashes; $self->render( json => $list ); }
Or:
sub list { my $self = shift; my $list = $self->db( 'audio' )->query( qq| select r.reciter_id id , concat( 'http://audio.quran.com:9999/', r.path, '/ogg/' ) base_url , r.arabic name_arabic , r.english name_english from audio.reciter r order by r.english | )->hashes; $self->render( json => $list ); }
This module uses Nour::Database which is a wrapper for DBIx::Simple to provide an app helper that let's you easily query your databases and get the resultsets you want without having to deal with bloated, retarded ORMs. SQL is good for you. It also uses Nour::Config to read your db configuration. See the configuration section for details on how to set that up.
First, cursorily scan "USAGE" in Mojolicious::Plugin::Nour::Config because it's relevant in that you should put your configuration under a directory structure that might look like this, for example:
$ find ./config/ ./config/ ./config/application ./config/application/nested ./config/application/nested/example.yml ./config/application.yml ./config/database ./config/database/private ./config/database/private/production.yml ./config/database/private/README.md ./config/database/config.yml
The only real file you need is ./config/database/config.yml. Overriding configuration in the "private" sub-directory e.g. ./config/database/private/ is just a neat feature which let's you override the entire config or just a single nested key/value that was imported from the "public" configuration i.e. ./config/database/config.yml. Why is this useful? You can `echo '*private*' >> .gitignore` and ensure that your passwords or sensitive tokens or what not don't get exposed in your public git repository.
./config/database/config.yml
./config/database/private/
Here's a couple examples of what ./config/database/config.yml might look like:
--- development: dsn: dbi:Pg:dbname=foo;host=bar username: foobar password: barbaz production: dsn: dbi:Pg:dbname=bar default: database: production username: barfoo password: baroo option: AutoCommit: 1 RaiseError: 1 PrintError: 1 pg_bool_tf: 0 pg_enable_utf8: 1
--- development: dsn: dbi:mysql:database=app_dev;host=10.0.1.99 production: dsn: dbi:mysql:database=app_prod;host=10.0.1.99 production_with_drop_priv: dsn: dbi:mysql:database=app_prod;host=10.0.1.99 username: drop password: drop otherdb: dsn: dbi:mysql:database=dbfoo;host=otherhost option: AutoCommit: 0 default: database: production username: ding password: dong option: AutoCommit: 1 RaiseError: 1 PrintError: 1 mysql_enable_utf8: 1 mysql_auto_reconnect: 1
Please report any bugs or feature requests through the issue tracker at https://github.com/sharabash/mojolicious-plugin-nour-database/issues. You will be notified automatically of any progress on your issue.
This is open source software. The code repository is available for public review and contribution under the terms of the license.
https://github.com/sharabash/mojolicious-plugin-nour-database
git clone git://github.com/sharabash/mojolicious-plugin-nour-database.git
Nour Sharabash <amirite@cpan.org>
Nour Sharabash <nour.sharabash@gmail.com>
This software is copyright (c) 2014 by Nour Sharabash.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Mojolicious::Plugin::Nour::Database, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious::Plugin::Nour::Database
CPAN shell
perl -MCPAN -e shell install Mojolicious::Plugin::Nour::Database
For more information on module installation, please visit the detailed CPAN module installation guide.