NAME
Sympa::DatabaseDriver - Base class of database drivers for Sympa
SYNOPSIS
package Sympa::DatabaseDriver::FOO;
use base qw(Sympa::DatabaseDriver);
DESCRIPTION
Sympa::DatabaseDriver is the base class of driver classes for Sympa Database Manager (SDM).
Instance methods subclasses should implement
-
required_modules ( )
Overridable. Returns an arrayref including package name(s) this driver requires. By default, no packages are required.
-
required_parameters ( )
Overridable. Returns an arrayref including names of required (not optional) parameters. By default, returns
['db_name', 'db_user']
.Note: On Sympa prior to 6.2.37b.2, it by default returned
['db_host', 'db_name', 'db_user']
. -
optional_modules ( )
Overridable. Returns an arrayref including all name(s) of optional packages. By default, there are no optional packages.
This method was introduced by Sympa 6.2.4.
-
optional_parameters ( )
Overridable. Returns an arrayref including all names of optional parameters. By default, returns
'db_passwd'
,'db_port'
,'db_options'
and so on. -
build_connect_string ( )
Mandatory for SQL driver. Builds the string to be used by the DBI to connect to the database.
Parameter:
None.
Returns:
String representing data source name (DSN).
-
connect ( )
Overridable. Connects to database calling “_connect”() and sets database handle.
Parameter:
None.
Returns:
True value or, if connection failed, false value.
-
_connect ( )
Overridable. Connects to database and returns native database handle.
The default implementation is for DBI database handle.
-
get_substring_clause ( { source_field => $source_field, separator => $separator, substring_length => $substring_length } )
This method was deprecated by Sympa 6.2.4.
-
get_limit_clause ( )
This method was deprecated.
-
get_formatted_date ( { mode => $mode, target => $target } )
Deprecated as of Sympa 6.2.25b.3.
Mandatory for SQL driver. Returns a character string corresponding to the expression to use in a query involving a date.
Parameters:
-
$mode
authorized values:
-
'write'
The sub returns the expression to use in ‘INSERT’ or ‘UPDATE’ queries.
-
'read'
The sub returns the expression to use in ‘SELECT’ queries.
-
-
$target
The name of the field or the value to be used in the query.
Returns:
The formatted date or
undef
if the date format mode is unknown. -
-
is_autoinc ( { table => $table, field => $field } )
Required to probe database structure. Checks whether a field is an auto-increment field or not.
Parameters:
-
$field
The name of the field to test
-
$table
The name of the table to add
Returns:
True if the field is an auto-increment field, false otherwise
-
-
is_sufficient_field_type ( $required, $actual )
Overridable, only for SQL driver. Checks if database field type is sufficient.
Parameters:
-
$required
Required field type.
-
$actual
Actual field type.
Returns:
The true value if actual field type is appropriate AND size is equal to or greater than required size.
This method was added on Sympa 6.2.67b.1.
-
-
set_autoinc ( { table => $table, field => $field } )
Required to update database structure. Defines the field as an auto-increment field.
Parameters:
-
$field
The name of the field to set.
-
$table
The name of the table to add.
Returns:
1
if the auto-increment could be set,undef
otherwise. -
-
get_tables ( )
Required to probe database structure. Returns the list of the tables in the database.
Parameters:
None.
Returns:
A ref to an array containing the list of the table names in the database,
undef
if something went wrong. -
add_table ( { table => $table } )
Required to update database structure. Adds a table to the database.
Parameter:
-
$table
The name of the table to add
Returns:
A character string report of the operation done or
undef
if something went wrong. -
-
get_fields ( { table => $table } )
Required to probe database structure. Returns a ref to an hash containing the description of the fields in a table from the database.
Parameters:
-
$table
The name of the table whose fields are requested.
Returns:
A hash in which the keys are the field names and the values are the field type.
Returns
undef
if something went wrong. -
-
update_field ( { table => $table, field => $field, type => $type, … } )
Required to update database structure. Changes the type of a field in a table from the database.
Parameters:
-
$field
The name of the field to update.
-
$table
The name of the table whose fields will be updated.
-
$type
The type of the field to add.
-
$notnull
Specifies that the field must not be null
Returns:
A character string report of the operation done or
undef
if something went wrong. -
-
add_field ( { table => $table, field => $field, type => $type, … } )
Required to update database structure. Adds a field in a table from the database.
Parameters:
-
$field
The name of the field to add.
-
$table
The name of the table where the field will be added.
-
$type
The type of the field to add.
-
$notnull
Specifies that the field must not be null.
-
$autoinc
Specifies that the field must be auto-incremental.
-
$primary
Specifies that the field is a key.
Returns:
A character string report of the operation done or
undef
if something went wrong. -
-
delete_field ( { table => $table, field => $field } )
Required to update database structure. Deletes a field from a table in the database.
Parameters:
-
$field
The name of the field to delete
-
$table
The name of the table where the field will be deleted.
Returns:
A character string report of the operation done or
undef
if something went wrong. -
-
get_primary_key ( { table => $table } )
Required to probe database structure. Returns the list fields being part of a table’s primary key.
-
$table
The name of the table for which the primary keys are requested.
Returns:
A ref to a hash in which each key is the name of a primary key or
undef
if something went wrong. -
-
unset_primary_key ( { table => $table } )
Required to update database structure. Drops the primary key of a table.
Parameter:
-
$table
The name of the table for which the primary keys must be dropped.
Returns:
A character string report of the operation done or
undef
if something went wrong. -
-
set_primary_key ( { table => $table, fields => $fields } )
Required to update database structure. Sets the primary key of a table.
Parameters:
-
$table
The name of the table for which the primary keys must be defined.
-
$fields
A ref to an array containing the names of the fields used in the key.
Returns:
A character string report of the operation done or
undef
if something went wrong. -
-
get_indexes ( { table => $table } )
Required to probe database structure. Returns a ref to a hash in which each key is the name of an index.
Parameter:
-
$table
The name of the table for which the indexes are requested.
Returns:
A ref to a hash in which each key is the name of an index. These key point to a second level hash in which each key is the name of the field indexed. Returns
undef
if something went wrong. -
-
unset_index ( { table => $table, index => $index } )
Required to update database structure. Drops an index of a table.
Parameters:
-
$table
The name of the table for which the index must be dropped.
-
$index
The name of the index to be dropped.
Returns:
A character string report of the operation done or
undef
if something went wrong. -
-
set_index ( { table => $table, index_name => $index_name, fields => $fields } )
Required to update database structure. Sets an index in a table.
Parameters:
-
$table
The name of the table for which the index must be defined.
-
$fields
A ref to an array containing the names of the fields used in the index.
-
$index_name
The name of the index to be defined.
Returns:
A character string report of the operation done or
undef
if something went wrong. -
-
translate_type ( $generic_type )
Required to probe and update database structure. Get native field type corresponds to generic type. The generic type is based on MySQL: See “full_db_struct” in Sympa::DatabaseDescription.
Subclasses of Sympa::DatabaseDriver class also can override methods provided by Sympa::Database class:
-
begin ( )
Overridable, only for SQL driver.
-
commit ( )
Overridable, only for SQL driver.
-
do_operation ( $operation, $parameters, …)
Overridable, only for LDAP driver.
-
do_query ( $query, $parameters, … )
Overridable, only for SQL driver.
-
do_prepared_query ( $query, $parameters, … )
Overridable, only for SQL driver.
-
rollback ( )
Overridable, only for SQL driver.
-
AS_DOUBLE ( $value )
Overridable. Helper functions to return the DOUBLE binding type and value used by “do_prepared_query”(). Overridden by inherited classes.
Parameter:
- $value
Parameter value
Returns:
One of:
- An array
( { sql_type => SQL_type }, value )
. - Single value (i.e. an array with single item), if special treatment won’t be needed.
- Empty array
()
if arguments were not given.
-
AS_BLOB ( $value )
Overridable. Helper functions to return the BLOB (binary large object) binding type and value used by “do_prepared_query”(). Overridden by inherited classes.
See “AS_DOUBLE” for more details.
Utility method
-
__dbh ( )
Instance method, protected. Returns native database handle which _connect() returned. This may be used at inside of each driver class.
SEE ALSO
Sympa::Database, Sympa::DatabaseManager.
HISTORY
Sympa Database Manager (SDM) appeared on Sympa 6.2.