| Bot-BasicBot-Pluggable-Module-SimpleBlog documentation | Contained in the Bot-BasicBot-Pluggable-Module-SimpleBlog distribution. |
Bot::BasicBot::Pluggable::Module::SimpleBlog::Store::SQLite - SQLite storage for Bot::BasicBot::Pluggable::Module::SimpleBlog.
use Bot::BasicBot::Pluggable::Module::SimpleBlog::Store::SQLite;
my $blog_store =
Bot::BasicBot::Pluggable::Module::SimpleBlog::Store::SQLite->new(
"/home/bot/brane.db" );
Store URLs in a sqlite database for Bot::BasicBot::Pluggable::Module::SimpleBot.
I'd made a thinko in version 0.01 in one of the column names in the table used to store the URLs in the database, so you'll have to delete your store file and start again. It didn't seem worth automatically detecting and fixing this since I only released 0.01 yesterday and I don't expect anyone to have installed it yet.
my $blog_store =
Bot::BasicBot::Pluggable::Module::SimpleBlog::Store::SQLite->new(
"/home/bot/brane.db" );
You must supply a filename writeable by the user the bot runs as. The file need not already exist; it will be created and the correct database schema set up as necessary.
Croaks if DBD::SQLite fails to connect to the file.
my $dbh = $store->dbh;
Returns the store's database handle.
$store->store( timestamp => $timestamp,
name => $who,
channel => $channel,
url => $url,
comment => $comment );
Stores the given information in the database. Croaks on error.
No retrieval methods yet.
Kake Pugh (kake@earth.li).
Copyright (C) 2003 Kake Pugh. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Bot-BasicBot-Pluggable-Module-SimpleBlog documentation | Contained in the Bot-BasicBot-Pluggable-Module-SimpleBlog distribution. |
package Bot::BasicBot::Pluggable::Module::SimpleBlog::Store::SQLite; use strict; use vars qw( $VERSION ); $VERSION = '0.02'; use base qw(Bot::BasicBot::Pluggable::Module::Base); use Carp; use DBD::SQLite;
sub new { my ($class, $filename) = @_; my $dbh = DBI->connect("dbi:SQLite:dbname=$filename", "", "") or croak "ERROR: Can't connect to sqlite database: " . DBI->errstr; my $self = { }; bless $self, $class; $self->{dbh} = $dbh; $self->ensure_db_schema_correct or return; return $self; }
sub dbh { my $self = shift; return $self->{dbh}; } sub ensure_db_schema_correct { my $self = shift; my $dbh = $self->{dbh}; my $sql = "SELECT name FROM sqlite_master WHERE type='table' AND name='blogged'"; my $sth = $dbh->prepare($sql) or croak "ERROR: " . $dbh->errstr; $sth->execute; my ($ok) = $sth->fetchrow_array; return 1 if $ok; $dbh->do("CREATE TABLE blogged ( timestamp text, name text, channel text, url text, comment text )" ) or croak "ERROR: " . $dbh->errstr; return 1; }
sub store { my ($self, %args) = @_; my $dbh = $self->{dbh}; my $sth = $dbh->prepare( qq{ INSERT INTO blogged (timestamp, name, channel, url, comment) VALUES (?, ?, ?, ?, ?) }) or return "Error: can't insert into database: " . $dbh->errstr; $sth->execute( @args{ qw( timestamp name channel url comment ) } ) or croak "Error: can't insert into database: " . $dbh->errstr; return 1; }
1;