Bio-EnsEMBL
view release on metacpan or search on metacpan
lib/Bio/EnsEMBL/DBSQL/BaseMetaContainer.pm view on Meta::CPAN
Arg [1] : string $key
a key under which $value should be stored
Arg [2] : string $value
the value to store in the meta table
Example : $meta_container->store_key_value($key, $value);
Description: stores a value in the meta container, accessable by a key
Returntype : none
Exceptions : Thrown if the key/value already exists.
Caller : ?
Status : Stable
=cut
sub store_key_value {
my ( $self, $key, $value ) = @_;
if ( $self->key_value_exists( $key, $value ) ) {
warn( "Key-value pair '$key'-'$value' "
. "already exists in the meta table; "
. "not storing duplicate" );
return;
}
my $sth;
if ( !$self->_species_specific_key($key) ) {
$sth = $self->prepare(
'INSERT INTO meta (meta_key, meta_value, species_id) '
. 'VALUES(?, ?, \N)' );
} else {
$sth = $self->prepare(
'INSERT INTO meta (meta_key, meta_value, species_id) '
. 'VALUES (?, ?, ?)' );
$sth->bind_param( 3, $self->species_id(), SQL_INTEGER );
}
$sth->bind_param( 1, $key, SQL_VARCHAR );
$sth->bind_param( 2, $value, SQL_VARCHAR );
$sth->execute();
$self->{'cache'} ||= {};
delete $self->{'cache'}->{$key};
} ## end sub store_key_value
=head2 update_key_value
Arg [1] : string $key
a key under which $value should be updated
Arg [2] : string $value
the value to update in the meta table
Example : $meta_container->update_key_value($key, $value);
Description: update a value in the meta container, accessable by a key
Returntype : none
Exceptions : none
Caller : ?
Status : Stable
=cut
sub update_key_value {
my ( $self, $key, $value ) = @_;
my $sth;
if ( !$self->_species_specific_key($key) ) {
$sth =
$self->prepare( 'UPDATE meta SET meta_value = ? '
. 'WHERE meta_key = ?'
. 'AND species_id IS NULL' );
} else {
$sth =
$self->prepare( 'UPDATE meta '
. 'SET meta_value = ? '
. 'WHERE meta_key = ? '
. 'AND species_id = ?' );
$sth->bind_param( 3, $self->species_id(), SQL_INTEGER );
}
$sth->bind_param( 1, $value, SQL_VARCHAR );
$sth->bind_param( 2, $key, SQL_VARCHAR );
$sth->execute();
} ## end sub update_key_value
=head2 delete_key
Arg [1] : string $key
The key which should be removed from the database.
Example : $meta_container->delete_key('sequence.compression');
Description: Removes all rows from the meta table which have a meta_key
equal to $key.
Returntype : none
Exceptions : none
Caller : dna_compress script, general
Status : Stable
=cut
sub delete_key {
my ( $self, $key ) = @_;
my $sth;
if ( !$self->_species_specific_key($key) ) {
$sth =
$self->prepare( 'DELETE FROM meta '
. 'WHERE meta_key = ?'
. 'AND species_id IS NULL' );
} else {
$sth =
$self->prepare( 'DELETE FROM meta '
. 'WHERE meta_key = ? '
. 'AND species_id = ?' );
$sth->bind_param( 2, $self->species_id(), SQL_INTEGER );
}
$sth->bind_param( 1, $key, SQL_VARCHAR );
$sth->execute();
delete $self->{'cache'}->{$key};
}
=head2 delete_key_value
Arg [1] : string $key
The key which should be removed from the database.
Arg [2] : string $value
The value to be removed.
Example : $meta_container->delete_key('patch', 'patch_39_40_b.sql|xref_unique_constraint');
Description: Removes all rows from the meta table which have a meta_key
equal to $key, AND a meta_value equal to $value.
Returntype : none
Exceptions : none
Caller : general
Status : Stable
=cut
sub delete_key_value {
my ( $self, $key, $value ) = @_;
my $sth;
( run in 1.339 second using v1.01-cache-2.11-cpan-f56aa216473 )