The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Nile::Setting - Application global settings database table manager.

SYNOPSIS

        # get setting object instance
        $setting = $self->me->setting;

        # load settings from database to the setting object.
        $setting->load("settings", "name", "value");

        # get settings
        say $setting->get("email");
        say $setting->get("website", "default value");
                
        # automatic getter support
        say $setting->email; # same as $setting->get('email');

        # set settings variables.
        $setting->set("page_views", $count);
        $setting->set(%vars);

        # automatic setter support
        $setting->email('ahmed@mewsoft.com'); # same as $setting->set('email', 'ahmed@mewsoft.com');

        # delete settings from memory and database table.
        $setting->delete(@names);

DESCRIPTION

Nile::Setting - Application global settings database table manager.

This class to manage an optional application shared settings database table the same way you share the var and config object.

Example of a suggested database table structure.

        CREATE TABLE settings (
                name varchar(255),              # name_column
                value varchar(255)              # value_column, change type to TEXT if needed
        ) ENGINE=InnoDB default CHARACTER SET=utf8;

Then you need to call the load setting once at the start of the application after you connect to the database.

        # get setting object instance
        $setting = $self->me->setting;

        # load settings from database to the setting object.
        $setting->load("settings", "name", "value");

Now you can get, set and delete the settings anywhere in your application.

        # get settings
        say $setting->get("email");
        say $setting->get("website", "default value");
                
        # automatic getter support
        say $setting->email; # same as $setting->get('email');

        # set settings variables.
        $setting->set("page_views", $count);
        $setting->set(%vars);

        # automatic setter support
        $setting->email('ahmed@mewsoft.com'); # same as $setting->set('email', 'ahmed@mewsoft.com');

        # delete settings from memory and database table.
        $setting->delete(@names);

setting_table_name()

        # set database settings table name
        $setting->setting_table_name("settings");

        # get database settings table name
        $setting->setting_table_name;

Get and set the settings database table name.

setting_name_column()

        # set settings table column name for the 'name_column'.
        $setting->setting_name_column("name");

        # get settings table column name for the 'name_column'.
        $setting->setting_name_column;

Get and set the settings database table column name.

setting_value_column()

        # set settings table column name for the 'value_column'.
        $setting->setting_value_column("value");

        # get settings table column name for the 'value_column'.
        $setting->setting_value_column;

Get and set the settings database table column value_column.

load()

        # load settings from database to the setting object.
        $setting->load($db_table, $name_column, $value_column);

Load the settings from database table to the setting object. This method can be chained.

unload()

        # clears all settings from memory.
        $setting->unload;

Resets the setting object and clear all settings from memory. This does not update the database table. This method can be chained.

vars()

        # get all settings as a hash or a hash ref.
        %vars = $setting->vars();
        $vars = $setting->vars();

Returns all settings as a hash or a hash reference.

set()

        # set settings variables.
        $setting->set("page_views", $count);
        $setting->set(%vars);

        # automatic setter support
        $setting->email('ahmed@mewsoft.com'); # same as $setting->set('email', 'ahmed@mewsoft.com');

Set settings variables.

get()

        # get settings
        say $setting->get("email");
        say $setting->get("website", "default value");
                
        # automatic getter support
        say $setting->email; # same as $setting->get('email');

Returns settings variables.

list()

        # get a list of settings variables.
        @vars = $setting->list(@names);

Returns a list of settings variables.

keys()

        # returns all settings names.
        @names = $setting->keys;

Returns all settings names.

exists()

        # check if a setting variable exist or not.
        $found = $setting->exists($name);

Check if a setting variable exist or not.

delete()

        # delete settings from memory and database table.
        $setting->delete(@names);

Delete a list of settings from memory and database table..

clear()

        # delete all settings from memory and database table.
        $setting->clear(1);

Delete all settings from memory and database table. This can not be undone. You must pass a true value for the function as a confirmation that you want to do the job.

object()

        # get a new setting object
        #my $setting_obj = $setting->object;
        
        # load and manage settings table separately
        #$setting_obj->load("table", "name", "value");

Returns a new setting object. This allows to load individual setting table and work with them.

Bugs

This project is available on github at https://github.com/mewsoft/Nile.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Nile.

SOURCE

Source repository is at https://github.com/mewsoft/Nile.

SEE ALSO

See Nile for details about the complete framework.

AUTHOR

Ahmed Amin Elsheshtawy, احمد امين الششتاوى <mewsoft@cpan.org> Website: http://www.mewsoft.com

COPYRIGHT AND LICENSE

Copyright (C) 2014-2015 by Dr. Ahmed Amin Elsheshtawy احمد امين الششتاوى mewsoft@cpan.org, support@mewsoft.com, https://github.com/mewsoft/Nile, http://www.mewsoft.com

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.