SQLite-Abstract

 view release on metacpan or  search on metacpan

lib/SQLite/Abstract.pm  view on Meta::CPAN

			SELECT count(*) FROM $self->{tablename}
		/
      );

    $self->_END_;

    return $count->[0][0];
}

sub sum {
    shift->count(@_);
}

sub _END_ {
    my $self = shift;

    $self->{q{COMMIT}}->();
    $self->{dbh}->errstr
      and eval { $self->{q{ROLLBACK}}->() };
}

sub do {
    shift->_do_(@_);
}

sub _do_ {
    my $self  = shift;
    my $query = "@_";
    my $affected;

    eval {
        $affected = $self->{q{dbh}}->do($query);
        $self->{q{COMMIT}}->();
    };

    if ( $self->{q{dbh}}->errstr ) {
        $self->err = $@;
        eval { $self->{q{ROLLBACK}}->() };
        if ( $self->{q{dbh}}->{q{RaiseError}} ) {
            croak $self->err;
        }
        else {
            carp $self->err;
            return undef;
        }
    }
    else {
        return $affected == 0
          ? "0E0"
          : $affected;
    }
}

sub _check_table {
    my $self = shift;
    $self->{q{tablename}}
      or croak _err_msg("missing table name");
}

sub _err_msg {
    __PACKAGE__ . q/:/ . (caller)[2] . q/:/ . __LINE__ . q/: / . "@_";
}

sub err : lvalue {
    $_[1]
      ? $_[0]->{q{err}} = $_[1]
      : $_[0]->{q{err}};
}

sub AUTOLOAD {
    my $self  = shift;
    my $query = shift;
    my $tmp   = shift;

    $tmp and $query = $tmp;
    $query or $query = q{};

    our $AUTOLOAD;
    ( my $method = $AUTOLOAD ) =~ s/.*:://s;

    if ( $method =~ /^select_(\w+)/i ) {
        my $fields = join ',', split /_/, $1;
        if ($fields) {
            $query =~ s/^\s*SELECT.+?FROM\s+\S+//;
            return $fields !~ /\,/
              ? $self->select( "$fields $query", \$0 )
              : $self->select("$fields $query");
        }
    }

    croak _err_msg("method $method does not exist");
}

sub DESTROY {
    my $self = shift;
    $self->{q{dbh}} = undef;
    $self = undef;
}

1

__END__


=head1 NAME

SQLite::Abstract - Object oriented wrapper for SQLite2

=head1 SYNOPSIS



 use SQLite::Abstract;

 
 my $db = SQLite::Abstract->new("database name");
 my $db = SQLite::Abstract->new(
    {
        DB => "database name",
        DSN => "dbi:SQLite2:dbname", 
        TABLE => "tablename",



( run in 0.773 second using v1.01-cache-2.11-cpan-99c4e6809bf )