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

NAME

FTN::Database - FTN SQL Database related operations for Fidonet/FTN related processing.

VERSION

Version 0.42

DESCRIPTION

FTN::Database are Perl modules containing common database related operations and definitions for Fidonet/FTN related SQL Database processing. The SQL database engine is one for which a DBD module exists, defaulting to SQLite.

EXPORT

The following functions are available in this module: create_ftn_database, open_ftn_database, close_ftn_database, drop_ftn_database, drop_ftn_table, create_ftn_index, and drop_ftn_index.

FUNCTIONS

create_ftn_database

Syntax: create_ftn_database($db_handle, $database_name);

Create an SQL database for use for Fidonet/FTN processing, where $db_handle is an existing open database handle and $database_name is the name of the database being created.

open_ftn_database

Syntax: $db_handle = open_ftn_database(\%db_options);

Open a database for Fidonet/FTN processing, where $db_handle is the database handle being returned to the calling program and the referenced hash contains the following items:

Type

The database type. This needs to be a database type for which a DBD module exists, the type being the name as used in the DBD module. The default type to be used is SQLite.

Host

The host name of the database server. If blank or not provided, a driver specific default is used. Not required If the Type is SQLite,

Port

The port number for the database server. If blank or not provided, a driver specific default is used. Not required If the Type is SQLite,

Name

The name of the database to be opened. If the Type is SQLite, this is a filename and path to the database file.

User

The database user, which should already have the neccesary priviledges.

Password

The database password for the database user.

close_ftn_database

Syntax: close_ftn_database($db_handle);

Closing an FTN database, where $db_handle is an existing open database handle.

drop_ftn_database

Syntax: drop_ftn_database($db_handle, $database_name);

Drop an SQL database being used for Fidonet/FTN processing if it exists, where $db_handle is an existing open database handle and $database_name is the name of the database being dropped.

create_ftn_table

Syntax: create_ftn_table($db_handle, $table_name, $defined_fields);

Create a table in an SQL database to be used for Fidonet/FTN processing where $db_handle is an existing open database handle, $table_name is the name of the table to be created, and $defined_fields is the sql to define the fields to be used for the table except for an id field which is set according to the driver type.

The string defining the fields could be coded like this: $defined_fields = "nodeaka VARCHAR(23) DEFAULT '' NOT NULL, "; $defined_fields .= "sysop VARCHAR(48) DEFAULT '' NOT NULL, "; $defined_fields .= "system VARCHAR(48) DEFAULT '' NOT NULL, "; $defined_fields .= "location VARCHAR(48) DEFAULT '' NOT NULL ";

drop_ftn_table

Syntax: drop_ftn_table($db_handle, $table_name);

Drop an FTN table from an SQL database being used for Fidonet/FTN processing if it exists, where $db_handle is an existing open database handle and $table_name is the name of the table to be dropped.

create_ftn_index

Syntax: create_ftn_index($db_handle, $table_name, $index_name, $indexed_fields);

Create an index named $index_name on table $table_name in an SQL database being used for Fidonet/FTN processing; where $db_handle is an existing open database handle, the $table_name is the name of the table that is being indexed, and $index_name is the name of the index itself. The index is created on the fields listed in $indexed_fields, with the field names separated by commas.

drop_ftn_index

Syntax: drop_ftn_index($db_handle,$index_name);

Drop an index from an FTN table in an SQL database being used for Fidonet/FTN processing if it exists, where $db_handle is an existing open database handle, and $index_name is the name of the index to be dropped.

EXAMPLES

An example of opening an FTN database, then closing it:

    use FTN::Database;

    my $db_handle = open_ftn_database(\%db_option);
    ...
    close_ftn_database($db_handle);

An example of creating a database for FTN related processing, using a mysql database:

    use FTN::Database;

    my $db_name = "ftndbtst";
    my $db_option = {
        Type = "mysql",
        Name = $db_name,
        User = $db_user,
        Password = $db_password,
    };
    my $db_handle = open_ftn_database(\%db_option);
    create_ftn_database($db_handle, $database_name);
    ...
    close_ftn_database($db_handle);

An example of dropping a database being used for FTN related processing, using a mysql database:

    use FTN::Database;

    my $db_name = "ftndbtst";
    my $db_option = {
        Type = 'mysql',
        Name = $db_name,
        User = $db_user,
        Password = $db_password,
    };
    my $db_handle = open_ftn_database(\%db_option);
    ...
    drop_ftn_database($db_handle, $db_name);
    close_ftn_database($db_handle);

AUTHOR

Robert James Clay, <jame at rocasa.us>

BUGS

Please report any bugs or feature requests via the web interface at http://sourceforge.net/p/ftnpl/ftn-database/tickets/. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

Note that you can also report any bugs or feature requests to bug-ftn-database at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=FTN-Database; however, the FTN-Database Issue tracker at the SourceForge project is preferred.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc FTN::Database

You can also look for information at:

REPOSITORIES

http://sourceforge.net/p/ftnpl/ftn-database/code https://github.com/ftnpl/FTN-Database

SEE ALSO

 L<DBI>, L<FTN::Database::Nodelist>, L<FTN::Database::Forum>,
 L<FTN::Database::ToDo>

COPYRIGHT & LICENSE

Copyright 2010-2014 Robert James Clay, all rights reserved.

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