root/trunk/lib/Data/ObjectDriver/Driver/DBI/Pg.pm @ 6

Revision 6, 1.0 kB (checked in by sky, 4 years ago)

r9@crucially-3 (orig r926): btrott | 2005-06-23 14:32:15 -0700
Moved default init_db into DBI.pm.
Removed audit stuff from BaseObject.


  • Property svn:keywords set to Id Revision
Line 
1# $Id$
2
3package Data::ObjectDriver::Driver::DBI::Pg;
4use strict;
5use base qw( Data::ObjectDriver::Driver::DBI );
6
7sub init_db {
8    my $driver = shift;
9    my $dbh = $driver->SUPER::init_db(@_);
10    $dbh->do("set timezone to 'UTC'");
11    $dbh;
12}
13
14sub bind_param_attributes {
15    my ($driver, $data_type) = @_;
16    if ($data_type && $data_type eq 'blob') {
17        return { pg_type => DBD::Pg::PG_BYTEA() };
18    }
19    return undef;
20}
21
22sub sequence_name {
23    my $driver = shift;
24    my($class) = @_;
25    return join '_', $class->datasource, 'seq';
26} 
27
28sub generate_id {
29    my $driver = shift;
30    my($class) = @_;
31    my $seq = $driver->sequence_name($class);
32    my $dbh = $driver->rw_handle($class->properties->{db});
33    my $sth = $dbh->prepare("SELECT NEXTVAL('$seq')")
34        or return $driver->error($dbh->errstr);
35    $sth->execute
36        or return $driver->error($dbh->errstr);
37    $sth->bind_columns(undef, \my($id));
38    $sth->fetch;
39    $sth->finish;
40    $id;
41}
42
431;
Note: See TracBrowser for help on using the browser.