6 UpdateGeolocationCvName.pm
10 mx-run UpdateGeolocationCvName [options] -H hostname -D dbname -u username [-F]
12 this is a subclass of L<CXGN::Metadata::Dbpatch>
13 see the perldoc of parent class for more details.
16 This patch updates the geolocation property cvname to the chado default of 'geolocations_property'
17 This subclass uses L<Moose>. The parent class uses L<MooseX::Runnable>
23 =head1 COPYRIGHT & LICENSE
25 Copyright 2010 Boyce Thompson Institute for Plant Research
27 This program is free software; you can redistribute it and/or modify
28 it under the same terms as Perl itself.
33 package UpdateGeolocationCvName
;
36 use Bio
::Chado
::Schema
;
38 extends
'CXGN::Metadata::Dbpatch';
41 has
'+description' => ( default => <<'' );
42 Description of this patch goes here
54 print STDOUT
"Executing the patch:\n " . $self->name . ".\n\nDescription:\n ". $self->description . ".\n\nExecuted by:\n " . $self->username . " .";
56 print STDOUT
"\nChecking if this db_patch was executed before or if previous db_patches have been executed.\n";
58 print STDOUT
"\nExecuting the SQL commands.\n";
60 my $schema = Bio
::Chado
::Schema
->connect( sub { $self->dbh->clone } );
62 my $plural_row = $schema->resultset("Cv::Cv")->find( { name
=> 'geolocations_property' } );
63 my $singular_row = $schema->resultset("Cv::Cv")->find( { name
=> 'geolocation_property' } );
65 if (defined $plural_row && defined $singular_row) {
66 my $old_id = $plural_row->cv_id();
67 my $new_id = $singular_row->cv_id();
68 my $rows_to_update = $schema->resultset("Cv::Cvterm")->search( { cv_id
=> $old_id } );
69 foreach my $row ($rows_to_update->all()) {
73 $plural_row->delete();
75 elsif (defined $plural_row) {
76 print STDOUT
"Fixing cv name...\n";
77 $plural_row->name('geolocation_property');
78 $plural_row->update();
80 elsif (defined $singular_row) {
81 print STDOUT
"Cv name is already correct, no changes necessary.\n";
84 print STDOUT
"No geolocation property cv found. Run patch 00076/AddBrAPIPropertyCvterms.pm to add geolocation props.\n";
87 print "You're done!\n";