fixing problems found by Crud.t
This commit is contained in:
parent
b3ac535f9a
commit
d9fffbdf7a
1 changed files with 18 additions and 10 deletions
|
|
@ -61,7 +61,7 @@ sub create {
|
||||||
$clause = "where ".$dbh->quote_identifier($sequenceKey)."=?";
|
$clause = "where ".$dbh->quote_identifier($sequenceKey)."=?";
|
||||||
push @params, $data->{$sequenceKey};
|
push @params, $data->{$sequenceKey};
|
||||||
}
|
}
|
||||||
my $sequenceNumber = $db->getScalar("select max(sequenceNumber) from ".$dbh->quote_identifier($tableName)." $clause", \@params);
|
my $sequenceNumber = $db->quickScalar("select max(sequenceNumber) from ".$dbh->quote_identifier($tableName)." $clause", \@params);
|
||||||
$sequenceNumber++;
|
$sequenceNumber++;
|
||||||
|
|
||||||
# create object
|
# create object
|
||||||
|
|
@ -87,15 +87,19 @@ sub crud_createTable {
|
||||||
my ($class, $session) = @_;
|
my ($class, $session) = @_;
|
||||||
my $db = $session->db;
|
my $db = $session->db;
|
||||||
my $dbh = $db->dbh;
|
my $dbh = $db->dbh;
|
||||||
$db->write('create table '.$dbh->quote_identifier($class->crud_getTableName).' (
|
my $tableName = $class->crud_getTableName;
|
||||||
|
$db->write('create table '.$dbh->quote_identifier($tableName).' (
|
||||||
'.$dbh->quote_identifier($class->crud_getTableKey).' varchar(22) binary not null primary key,
|
'.$dbh->quote_identifier($class->crud_getTableKey).' varchar(22) binary not null primary key,
|
||||||
sequenceNumber int not null default 1,
|
sequenceNumber int not null default 1,
|
||||||
dateCreated datetime,
|
dateCreated datetime,
|
||||||
lastUpdated datetime
|
lastUpdated datetime
|
||||||
)');
|
)');
|
||||||
$class->crud_updateTable($session);
|
$class->crud_updateTable($session);
|
||||||
$db->write('alter table '.dbh->quote_identifier($class->crud_getTableName).'
|
my $sequenceKey = $class->crud_getSequenceKey;
|
||||||
add index '.$dbh->quote_identifier($class->crud_getTableKey).' ('.$dbh->quote_identifier($class->crud_getTableKey).')');
|
if ($sequenceKey) {
|
||||||
|
$db->write('alter table '.dbh->quote_identifier($tableName).'
|
||||||
|
add index '.$dbh->quote_identifier($sequenceKey).' ('.$dbh->quote_identifier($sequenceKey).')');
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -110,7 +114,7 @@ B<NOTE:> When you subclass WebGUI::Crud, note the properties you're defining in
|
||||||
Returns a hash reference that looks like this:
|
Returns a hash reference that looks like this:
|
||||||
|
|
||||||
{
|
{
|
||||||
tableName => 'unamed_crud_table',
|
tableName => 'unnamed_crud_table',
|
||||||
tableKey => 'id',
|
tableKey => 'id',
|
||||||
sequenceKey => '',
|
sequenceKey => '',
|
||||||
properties => {},
|
properties => {},
|
||||||
|
|
@ -150,7 +154,7 @@ sub crud_definition {
|
||||||
my $class = shift;
|
my $class = shift;
|
||||||
tie my %properties, 'Tie::IxHash';
|
tie my %properties, 'Tie::IxHash';
|
||||||
my %definition = (
|
my %definition = (
|
||||||
tableName => 'unamed_crud_table',
|
tableName => 'unnamed_crud_table',
|
||||||
tableKey => 'id',
|
tableKey => 'id',
|
||||||
sequenceKey => '',
|
sequenceKey => '',
|
||||||
properties => \%properties,
|
properties => \%properties,
|
||||||
|
|
@ -174,7 +178,7 @@ sub crud_dropTable {
|
||||||
my ($class, $session) = @_;
|
my ($class, $session) = @_;
|
||||||
my $db = $session->db;
|
my $db = $session->db;
|
||||||
my $dbh = $db->dbh;
|
my $dbh = $db->dbh;
|
||||||
$db->write("drop table ".$dbh->quote_identifier($class->crud_getTableName)."");
|
$db->write("drop table ".$dbh->quote_identifier($class->crud_getTableName));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -255,6 +259,10 @@ sub crud_updateTable {
|
||||||
my %tableFields = ();
|
my %tableFields = ();
|
||||||
my $sth = $db->read("DESCRIBE ".$tableName);
|
my $sth = $db->read("DESCRIBE ".$tableName);
|
||||||
while (my ($col, $type) = $sth->array) {
|
while (my ($col, $type) = $sth->array) {
|
||||||
|
next if ($col eq $class->crud_getTableKey);
|
||||||
|
next if ($col eq 'lastUpdated');
|
||||||
|
next if ($col eq 'dateCreated');
|
||||||
|
next if ($col eq 'sequenceNumber');
|
||||||
$tableFields{$col} = $type;
|
$tableFields{$col} = $type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -350,11 +358,11 @@ sub get {
|
||||||
|
|
||||||
# return a specific property
|
# return a specific property
|
||||||
if (defined $name) {
|
if (defined $name) {
|
||||||
return $self->objectData->{$name};
|
return $objectData{id $self}{$name};
|
||||||
}
|
}
|
||||||
|
|
||||||
# return a copy of all properties
|
# return a copy of all properties
|
||||||
my %copy = %{$self->objectData};
|
my %copy = %{$objectData{id $self}};
|
||||||
return \%copy;
|
return \%copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -481,7 +489,7 @@ Returns a guid, this object's unique identifier.
|
||||||
|
|
||||||
sub getId {
|
sub getId {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->objectData->{$self->crud_getTableKey};
|
return $objectData{id $self}{$self->crud_getTableKey};
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue