NAME
List::Filter::Storage::DBI - filter storage via DBI
SYNOPSIS
# This is a plugin, not intended for direct use.
# See: List:Filter:Storage
use List::Filter::Storage::DBI;
my $lfps_dbi = List::Filter::Storage::DBI->new(
type => 'filter',
connect_to => $connect_to,
owner => $owner,
password => $password,
);
DESCRIPTION
This is a general, database-neutral (or so I hope) storage plugin that should allow for reading and writing List::Filter filters from any database with a DBI driver.
Note that in the event that database-specific code is needed, A specific plugin that inherits from this one can be written: the List::Filter system should find it automatically, if it's named in the standard way (ala DBD::*). E.g. a postgresql driver would be
List::Filter::Storage::DBI::Pg
METHODS
initialization code
- new
-
Takes an optional hashref as an argument, with named fields identical to the names of the object attributes.
With no arguments, the newly created filter will be empty.
- init
-
Initialize object attributes and then lock them down to prevent accidental creation of new ones.
Note: there is no leading underscore on name "init", though it's arguably an "internal" routine (i.e. not likely to be of use to client code).
- create_filter_table
-
Creates the standard storage tables for this object's type.
- create_table
-
Takes a block of sql as an argument, which is expected to contain a CREATE TABLE statement. Tries to run the sql, but does not object if the table already exists already. However, this method "croaks" on any other error.
Note: It tries to create the table, and traps the error if it exists already. This is more portable -- to my knowledge -- than trying to get a listing of existing tables.
- init_dbh
-
Initializes database connection.
main methods
- lookup
- save
-
Saves the given filter object to the database.
Refuses to save filters named with a leading underscore.
Returns the filter on success, otherwise undef.
- list_filters
-
Returns a list of all avaliable named filters.
special accessors (access the "extra" namespace)
- dbh
-
Getter for object attribute dbh
When called for the first time, initiates database connection.
- set_dbh
-
Setter for object attribute set_dbh
basic accessors (defined in List::Filter::Storage);
- connect_to
-
Getter for object attribute connect_to
- set_connect_to
-
Setter for object attribute set_connect_to
- owner
-
Getter for object attribute owner
- set_owner
-
Setter for object attribute set_owner
- password
-
Getter for object attribute password
- set_password
-
Setter for object attribute set_password
- attributes
-
Getter for object attribute attributes
- set_attributes
-
Setter for object attribute set_attributes
- extra
-
Getter for object attribute extra
- set_extra
-
Setter for object attribute set_extra
Design Notes
This single table schema isn't an efficient use of an RDMS, but the needs here are relatively simple, and this should be fairly portable.
The primary simplification used here is to serialize the array of terms and store it in a single text field.
Data::Dumper has been used for serialization (in preference to Storable) to improve the readability of the database.
SEE ALSO
List::Filter::Project List:Filter:Storage List::Filter
AUTHOR
Joseph Brenner, <doom@kzsu.stanford.edu>, 18 May 2007
COPYRIGHT AND LICENSE
Copyright (C) 2007 by Joseph Brenner
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.2 or, at your option, any later version of Perl 5 you may have available.
BUGS
None reported... yet.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 194:
You forgot a '=back' before '=head2'