NAME

App::RPi::EnvUI::DB - Database manager for App::RPi::EnvUI environment control sysytem

SYNOPSIS use App::RPi::EnvUI::DB;

my $db = App::RPi::EnvUI::DB->new;

$db->method(@args);

DESCRIPTION

This is the database abstraction class for App::RPi::EnvUI. It abstracts away the database work from the API and the webapp itself.

METHODS

new(%args)

Returns a new App::RPi::EnvUI::DB object. All parameters are sent in as a hash structure.

Parameters:

testing

Optional, Bool. 1 to enable testing mode, 0 to disable.

Default: 0 (off)

aux($aux_id)

Fetches and returns a hash reference containing the details of an auxillary channel.

Parameters:

$aux_id

Mandatory, String. The string name of the auxillary channel (eg: aux1)

Return: Hash reference (see above)

auxs

Fetches and returns a hash reference of hash references. The keys of the top-level hash is a list of all the auxillary channel names, and each key has a value of another hash reference, containing the details of that specific aux channel. Takes no parameters.

begin

Start a transaction for bulk database writes. Used only in scopes that use update_bulk() and update_bulk_all().

commit

Commit a transaction for bulk database writes. Used only in scopes that use update_bulk() and update_bulk_all().

config_control($want)

Fetches and returns the value of a specific control configuration variable.

Parameters:

$want

Mandatory, String. The name of the configuration variable to fetch the value for.

Return: The value of the specified variable.

config_core($want)

Fetches and returns the value of a specific core configuration variable.

Parameters:

$want

Mandatory, String. The name of the configuration variable to fetch the value for.

Return: The value of the specified variable.

config_light($want)

Fetches and returns either a specific light configuration variable value, or the entire light configuration section.

Parameters:

$want

Optional, String. If specified, we'll fetch only the value of this specific configuration variable.

Return: Single scalar value if $want is sent in, or a hash reference of the entire configuration section where the keys are the variable names, and the values are the configuration values.

delete($table)

Deletes all data from the specified table.

Parameters:

$table

Mandatory, String. The name of the table to delete all the data from.

env

Fetches and returns as a hash reference the last database entry of the stats (environment) database table. This hash contains the latest temperature/humidity update, along with a timestamp and row ID. Takes no parameters.

graph_data

Fetches and approximately 24 hours worth of rows starting from the last insert and going backwards.

Returns an array reference that contain an array reference for each row found.

insert_env($temp, $humidity)

Inserts into the stats database table a new row containing a row ID, timestamp, and the values sent in with the parameters.

Parameters:

$temp

Mandatory, Integer: The temperature.

$humidity

Mandatory, Integer: The humidity.

last_id

Returns the ID of the last row entered into the stats database table.

update($table, $column, $value, $where_col, $where_val)

Performs an update action on a given database table.

Parameters:

$table

Mandatory, String: The name of the database table to act upon.

$column

Mandatory, String: The column of the specified table to operate on.

$value

Mandatory, depends: The value you want the column set to.

$where_col

Optional, String: The name of the column to perform a WHERE clause on. If this is not sent in, we'll operate on all rows.

$where_val

Optional, depends: The value of the column we're looking for in a WHERE clause. This value is ignored if $where_col is not specified.

NOTE: If $where_col is not sent in, we will operate on all rows in the specified table.

update_bulk($table, $col, $where_col, $data)

Bulk updates to the database consolidating statements for efficiency. Used primarily in the initialization phases.

Before you set this call up, you must make a call to config(), and after you're done, make a call to commit.

The parameters are the same as update(), less:

$data

Mandatory, array ref of array refs. Each inner array reference that contains the value to update to, and the where clause value.

update_bulk_all($table, $col, $data)

Same as update_bulk() except operates on all table rows (there's no where clause).

user($user)

Fetches a user's information as found in the 'auth' database table.

Parameters:

$user

Mandatory, String. The name of the user to fetch the password for.

Return: A hash reference containing the user's details.

AUTHOR

Steve Bertrand, <steveb@cpan.org<gt>

LICENSE AND COPYRIGHT

Copyright 2017 Steve Bertrand.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.