Change crud_get{Sequence,Table}Key and crud_getTableName methods to use Moose's meta instead.
This commit is contained in:
parent
03a6a624da
commit
87c183e134
1 changed files with 42 additions and 42 deletions
|
|
@ -83,9 +83,9 @@ Once you have a crud class, you can use it's methods like this:
|
||||||
|
|
||||||
use WebGUI::Crud::Subclass;
|
use WebGUI::Crud::Subclass;
|
||||||
|
|
||||||
$sequenceKey = WebGUI::Crud::Subclass->crud_getSequenceKey($session);
|
$sequenceKey = WebGUI::Crud::Subclass->meta->sequenceKey($session);
|
||||||
$tableKey = WebGUI::Crud::Subclass->crud_getTableKey($session);
|
$tableKey = WebGUI::Crud::Subclass->meta->tableKey($session);
|
||||||
$tableName = WebGUI::Crud::Subclass->crud_getTableName($session);
|
$tableName = WebGUI::Crud::Subclass->meta->tableName($session);
|
||||||
$propertiesHashRef = WebGUI::Crud::Subclass->crud_getProperties($session);
|
$propertiesHashRef = WebGUI::Crud::Subclass->crud_getProperties($session);
|
||||||
$definitionHashRef = WebGUI::Crud::Subclass->crud_definition($session);
|
$definitionHashRef = WebGUI::Crud::Subclass->crud_definition($session);
|
||||||
|
|
||||||
|
|
@ -155,8 +155,8 @@ sub create {
|
||||||
|
|
||||||
# initialize
|
# initialize
|
||||||
my $definition = $class->crud_definition($session);
|
my $definition = $class->crud_definition($session);
|
||||||
my $tableKey = $class->crud_getTableKey($session);
|
my $tableKey = $class->meta->tableKey($session);
|
||||||
my $tableName = $class->crud_getTableName($session);
|
my $tableName = $class->meta->tableName($session);
|
||||||
my $db = $session->db;
|
my $db = $session->db;
|
||||||
my $dbh = $db->dbh;
|
my $dbh = $db->dbh;
|
||||||
|
|
||||||
|
|
@ -174,7 +174,7 @@ sub create {
|
||||||
}
|
}
|
||||||
|
|
||||||
# determine sequence
|
# determine sequence
|
||||||
my $sequenceKey = $class->crud_getSequenceKey($session);
|
my $sequenceKey = $class->meta->sequenceKey($session);
|
||||||
my $clause;
|
my $clause;
|
||||||
my @params;
|
my @params;
|
||||||
if ($sequenceKey) {
|
if ($sequenceKey) {
|
||||||
|
|
@ -205,7 +205,7 @@ A reference to a WebGUI::Session.
|
||||||
|
|
||||||
sub crud_createOrUpdateTable {
|
sub crud_createOrUpdateTable {
|
||||||
my ( $class, $session ) = @_;
|
my ( $class, $session ) = @_;
|
||||||
my $tableName = $class->crud_getTableName($session);
|
my $tableName = $class->meta->tableName($session);
|
||||||
my $tableExists = $session->db->dbh->do("show tables like '$tableName'");
|
my $tableExists = $session->db->dbh->do("show tables like '$tableName'");
|
||||||
|
|
||||||
return ( $tableExists ne '0E0' ? $class->crud_updateTable($session) : $class->crud_createTable($session) );
|
return ( $tableExists ne '0E0' ? $class->crud_updateTable($session) : $class->crud_createTable($session) );
|
||||||
|
|
@ -227,16 +227,16 @@ 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;
|
||||||
my $tableName = $class->crud_getTableName($session);
|
my $tableName = $class->meta->tableName($session);
|
||||||
$class->crud_dropTable($session);
|
$class->crud_dropTable($session);
|
||||||
$db->write('create table '.$dbh->quote_identifier($tableName).' (
|
$db->write('create table '.$dbh->quote_identifier($tableName).' (
|
||||||
'.$dbh->quote_identifier($class->crud_getTableKey($session)).' CHAR(22) binary not null primary key,
|
'.$dbh->quote_identifier($class->meta->tableKey($session)).' CHAR(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);
|
||||||
my $sequenceKey = $class->crud_getSequenceKey($session);
|
my $sequenceKey = $class->meta->sequenceKey($session);
|
||||||
if ($sequenceKey) {
|
if ($sequenceKey) {
|
||||||
$db->write('alter table '.$dbh->quote_identifier($tableName).'
|
$db->write('alter table '.$dbh->quote_identifier($tableName).'
|
||||||
add index '.$dbh->quote_identifier($sequenceKey).' ('.$dbh->quote_identifier($sequenceKey).')');
|
add index '.$dbh->quote_identifier($sequenceKey).' ('.$dbh->quote_identifier($sequenceKey).')');
|
||||||
|
|
@ -332,7 +332,7 @@ sub crud_dropTable {
|
||||||
}
|
}
|
||||||
my $db = $session->db;
|
my $db = $session->db;
|
||||||
my $dbh = $db->dbh;
|
my $dbh = $db->dbh;
|
||||||
$db->write("drop table if exists ".$dbh->quote_identifier($class->crud_getTableName($session)));
|
$db->write("drop table if exists ".$dbh->quote_identifier($class->meta->tableName($session)));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -358,9 +358,9 @@ sub crud_getProperties {
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 crud_getSequenceKey ( session )
|
=head2 meta->sequenceKey ( session )
|
||||||
|
|
||||||
A management class method that returns just the 'sequenceKey' from crud_definition().
|
A management class method that returns just the 'sequenceKey' from the meta class.
|
||||||
|
|
||||||
=head3 session
|
=head3 session
|
||||||
|
|
||||||
|
|
@ -368,16 +368,16 @@ A reference to a WebGUI::Session.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub crud_getSequenceKey {
|
sub meta->sequenceKey {
|
||||||
my ($class) = @_;
|
my ($class) = @_;
|
||||||
return $class->meta->sequenceKey;
|
return $class->meta->sequenceKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 crud_getTableName ( session )
|
=head2 meta->tableName ( session )
|
||||||
|
|
||||||
A management class method that returns just the 'tableName' from crud_definition().
|
A management class method that returns just the 'tableName'.
|
||||||
|
|
||||||
=head3 session
|
=head3 session
|
||||||
|
|
||||||
|
|
@ -385,16 +385,16 @@ A reference to a WebGUI::Session.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub crud_getTableName {
|
sub meta->tableName {
|
||||||
my ($class) = @_;
|
my ($class) = @_;
|
||||||
return $class->meta->tableName;
|
return $class->meta->tableName;
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 crud_getTableKey ( session )
|
=head2 meta->tableKey ( session )
|
||||||
|
|
||||||
A management class method that returns just the 'tableKey' from crud_definition().
|
A management class method that returns just the 'tableKey'.
|
||||||
|
|
||||||
=head3 session
|
=head3 session
|
||||||
|
|
||||||
|
|
@ -402,7 +402,7 @@ A reference to a WebGUI::Session.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub crud_getTableKey {
|
sub meta->tableKey {
|
||||||
my ($class) = @_;
|
my ($class) = @_;
|
||||||
return $class->meta->tableKey;
|
return $class->meta->tableKey;
|
||||||
}
|
}
|
||||||
|
|
@ -426,12 +426,12 @@ sub crud_updateTable {
|
||||||
}
|
}
|
||||||
my $db = $session->db;
|
my $db = $session->db;
|
||||||
my $dbh = $db->dbh;
|
my $dbh = $db->dbh;
|
||||||
my $tableName = $dbh->quote_identifier($class->crud_getTableName($session));
|
my $tableName = $dbh->quote_identifier($class->meta->tableName($session));
|
||||||
|
|
||||||
# find out what fields already exist
|
# find out what fields already exist
|
||||||
my %tableFields = ();
|
my %tableFields = ();
|
||||||
my $sth = $db->read("DESCRIBE ".$tableName);
|
my $sth = $db->read("DESCRIBE ".$tableName);
|
||||||
my $tableKey = $class->crud_getTableKey($session);
|
my $tableKey = $class->meta->tableKey($session);
|
||||||
while (my ($col, $type, $null, $key, $default) = $sth->array) {
|
while (my ($col, $type, $null, $key, $default) = $sth->array) {
|
||||||
next if ($col ~~ [$tableKey, 'lastUpdated', 'dateCreated','sequenceNumber']);
|
next if ($col ~~ [$tableKey, 'lastUpdated', 'dateCreated','sequenceNumber']);
|
||||||
$tableFields{$col} = {
|
$tableFields{$col} = {
|
||||||
|
|
@ -508,7 +508,7 @@ Deletes this object from the database. Returns 1 on success.
|
||||||
|
|
||||||
sub delete {
|
sub delete {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
$self->session->db->deleteRow($self->crud_getTableName($self->session), $self->crud_getTableKey($self->session), $self->getId);
|
$self->session->db->deleteRow($self->meta->tableName($self->session), $self->meta->tableKey($self->session), $self->getId);
|
||||||
$self->reorder;
|
$self->reorder;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
@ -523,9 +523,9 @@ Moves this object one position closer to the end of its sequence. If the object
|
||||||
|
|
||||||
sub demote {
|
sub demote {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $tableKey = $self->crud_getTableKey($self->session);
|
my $tableKey = $self->meta->tableKey($self->session);
|
||||||
my $tableName = $self->crud_getTableName($self->session);
|
my $tableName = $self->meta->tableName($self->session);
|
||||||
my $sequenceKey = $self->crud_getSequenceKey($self->session);
|
my $sequenceKey = $self->meta->sequenceKey($self->session);
|
||||||
my @params = ($self->get('sequenceNumber') + 1);
|
my @params = ($self->get('sequenceNumber') + 1);
|
||||||
my $db = $self->session->db;
|
my $db = $self->session->db;
|
||||||
my $dbh = $db->dbh;
|
my $dbh = $db->dbh;
|
||||||
|
|
@ -700,10 +700,10 @@ sub getAllSql {
|
||||||
|
|
||||||
# setup
|
# setup
|
||||||
my $dbh = $session->db->dbh;
|
my $dbh = $session->db->dbh;
|
||||||
my $tableName = $class->crud_getTableName($session);
|
my $tableName = $class->meta->tableName($session);
|
||||||
|
|
||||||
# the base query
|
# the base query
|
||||||
my $sql = "select ".$dbh->quote_identifier($tableName, $class->crud_getTableKey($session))." from ".$dbh->quote_identifier($tableName);
|
my $sql = "select ".$dbh->quote_identifier($tableName, $class->meta->tableKey($session))." from ".$dbh->quote_identifier($tableName);
|
||||||
|
|
||||||
# process joins
|
# process joins
|
||||||
my @joins;
|
my @joins;
|
||||||
|
|
@ -738,7 +738,7 @@ sub getAllSql {
|
||||||
}
|
}
|
||||||
|
|
||||||
# limit to our sequence
|
# limit to our sequence
|
||||||
my $sequenceKey = $class->crud_getSequenceKey($session);
|
my $sequenceKey = $class->meta->sequenceKey($session);
|
||||||
if (exists $options->{sequenceKeyValue} && $sequenceKey) {
|
if (exists $options->{sequenceKeyValue} && $sequenceKey) {
|
||||||
push @params, $options->{sequenceKeyValue};
|
push @params, $options->{sequenceKeyValue};
|
||||||
push @where, $dbh->quote_identifier($tableName, $sequenceKey)."=?";
|
push @where, $dbh->quote_identifier($tableName, $sequenceKey)."=?";
|
||||||
|
|
@ -803,7 +803,7 @@ A guid, the unique identifier for this object.
|
||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
my ($class, $session, $id) = @_;
|
my ($class, $session, $id) = @_;
|
||||||
my $tableKey = $class->crud_getTableKey($session);
|
my $tableKey = $class->meta->tableKey($session);
|
||||||
|
|
||||||
# validate
|
# validate
|
||||||
unless (defined $session && $session->isa('WebGUI::Session')) {
|
unless (defined $session && $session->isa('WebGUI::Session')) {
|
||||||
|
|
@ -814,7 +814,7 @@ sub new {
|
||||||
}
|
}
|
||||||
|
|
||||||
# retrieve object data
|
# retrieve object data
|
||||||
my $data = $session->db->getRow($class->crud_getTableName($session), $tableKey, $id);
|
my $data = $session->db->getRow($class->meta->tableName($session), $tableKey, $id);
|
||||||
if ($data->{$tableKey} eq '') {
|
if ($data->{$tableKey} eq '') {
|
||||||
WebGUI::Error::ObjectNotFound->throw(error=>'no such '.$tableKey, id=>$id);
|
WebGUI::Error::ObjectNotFound->throw(error=>'no such '.$tableKey, id=>$id);
|
||||||
}
|
}
|
||||||
|
|
@ -845,9 +845,9 @@ Moves this object one position closer to the beginning of its sequence. If the o
|
||||||
|
|
||||||
sub promote {
|
sub promote {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $tableKey = $self->crud_getTableKey($self->session);
|
my $tableKey = $self->meta->tableKey($self->session);
|
||||||
my $tableName = $self->crud_getTableName($self->session);
|
my $tableName = $self->meta->tableName($self->session);
|
||||||
my $sequenceKey = $self->crud_getSequenceKey($self->session);
|
my $sequenceKey = $self->meta->sequenceKey($self->session);
|
||||||
my $sequenceKeyValue = $self->get($sequenceKey);
|
my $sequenceKeyValue = $self->get($sequenceKey);
|
||||||
my @params = ($self->get('sequenceNumber')-1);
|
my @params = ($self->get('sequenceNumber')-1);
|
||||||
my $clause = '';
|
my $clause = '';
|
||||||
|
|
@ -882,12 +882,12 @@ Removes gaps in the sequence. Usually only called by delete(), but may be useful
|
||||||
|
|
||||||
sub reorder {
|
sub reorder {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
my $tableKey = $self->crud_getTableKey($self->session);
|
my $tableKey = $self->meta->tableKey;
|
||||||
my $tableName = $self->crud_getTableName($self->session);
|
my $tableName = $self->meta->tableName;
|
||||||
my $sequenceKey = $self->crud_getSequenceKey($self->session);
|
my $sequenceKey = $self->meta->sequenceKey;
|
||||||
my $sequenceKeyValue = $self->get($sequenceKey);
|
my $sequenceKeyValue = $self->$sequenceKey;
|
||||||
my $i = 1;
|
my $i = 1;
|
||||||
my $db = $self->session->db;
|
my $db = $self->session->db;
|
||||||
my $dbh = $db->dbh;
|
my $dbh = $db->dbh;
|
||||||
|
|
||||||
# find all the items in this sequence
|
# find all the items in this sequence
|
||||||
|
|
@ -941,7 +941,7 @@ B<WARNING:> As part of it's validation mechanisms, update() will delete any elem
|
||||||
#
|
#
|
||||||
# # validate incoming data
|
# # validate incoming data
|
||||||
# my $properties = $self->crud_getProperties($session);
|
# my $properties = $self->crud_getProperties($session);
|
||||||
# my $dbData = { $self->crud_getTableKey($session) => $self->getId };
|
# my $dbData = { $self->meta->tableKey($session) => $self->getId };
|
||||||
# foreach my $property (keys %{$data}) {
|
# foreach my $property (keys %{$data}) {
|
||||||
#
|
#
|
||||||
# # don't save fields that aren't part of our definition
|
# # don't save fields that aren't part of our definition
|
||||||
|
|
@ -972,7 +972,7 @@ B<WARNING:> As part of it's validation mechanisms, update() will delete any elem
|
||||||
# %{$objectData{$refId}} = (%{$objectData{$refId}}, %{$data});
|
# %{$objectData{$refId}} = (%{$objectData{$refId}}, %{$data});
|
||||||
#
|
#
|
||||||
# # update the database
|
# # update the database
|
||||||
# $session->db->setRow($self->crud_getTableName($session), $self->crud_getTableKey($session), $dbData);
|
# $session->db->setRow($self->meta->tableName($session), $self->meta->tableKey($session), $dbData);
|
||||||
# return 1;
|
# return 1;
|
||||||
#}
|
#}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue