Mercurial > repos > jesse-erdmann > tapdance
view lib/project_man.pl @ 3:17ce4f3bffa2 default tip
Uploaded
author | jesse-erdmann |
---|---|
date | Tue, 24 Jan 2012 18:33:41 -0500 |
parents | 1437a2df99c0 |
children |
line wrap: on
line source
#!/project/bioperl/perl-5.10.1-sles11/bin/perl -w ## # # This file requires that a database connection be configured and # connected to the scalar $dbh # ## if (!defined($project_table_name)) { $project_table_name = "TAPDANCE_project_master"; } return 1; sub project_table_check { my $create_string = "CREATE TABLE IF NOT EXISTS " . $project_table_name . " (name VARCHAR(255) NOT NULL, insert_gen TIMESTAMP, cis_call TIMESTAMP)"; my $sth = $dbh->prepare($create_string); $sth->execute; } sub project_exists { my ($proj_name) = @_; &project_table_check(); my $test_string = "SELECT COUNT(name) FROM " . $project_table_name . " WHERE name = '" . $proj_name . "'"; my $sth = $dbh->prepare($test_string); $sth->execute; (@row) = $sth->fetchrow_array; return $row[0] > 0; } sub update_project { &project_table_check(); my ($proj_name, $insert_gen, $cis_call) = @_; my $update_string = "UPDATE " . $project_table_name . " SET"; my $prefix = " "; if ($insert_gen) { $update_string = $update_string . $prefix . "insert_gen = NOW()"; $prefix = ", " } if ($cis_call) { $update_string = $update_string . $prefix . "cis_call = NOW()"; } $update_string = $update_string . " WHERE name = '" . $proj_name . "'"; my $sth = $dbh->prepare($update_string); $sth->execute; } sub insert_project { &project_table_check(); my ($proj_name, $insert_gen, $cis_call) = @_; my $insert_string = "INSERT INTO " . $project_table_name; my $insert_cols_string = " (name"; my $insert_vals_string = " VALUES('" . $proj_name . "'"; if ($insert_gen) { $insert_cols_string = $insert_cols_string . ", insert_gen"; $insert_vals_string = $insert_vals_string . ", NOW()"; } if ($cis_call) { $insert_cols_string = $insert_cols_string . ", cis_call"; $insert_vals_string = $insert_vals_string . ", NOW()"; } $insert_cols_string = $insert_cols_string . ") "; $insert_vals_string = $insert_vals_string . ") "; $insert_string = $insert_string . $insert_cols_string . $insert_vals_string; my $sth = $dbh->prepare($insert_string); $sth->execute; } sub delete_project { &project_table_check(); my ($proj_name) = @_; my $delete_string = "DELETE FROM " . $project_table_name . " WHERE name = '" . $proj_name . "'"; my $sth = $dbh->prepare($delete_string); $sth->execute; } sub set_project_status { my ($proj_name, $insert_gen, $cis_call) = @_; if (&project_exists($proj_name)) { &update_project($proj_name, $insert_gen, $cis_call); } else { &insert_project($proj_name, $insert_gen, $cis_call); } } sub get_project_list { my ($user_name, $query_type, @tags) = @_; &project_table_check(); my $select_string = "SELECT name FROM " . $project_table_name . " WHERE name LIKE '" . $user_name . "%'"; my $sth = $dbh->prepare($select_string); $sth->execute(); my @projects = (); while ((@row) = $sth->fetchrow_array) { if ($query_type eq "all") { push @projects, $row[0]; } else { my $conjunctive; #if ($query_type eq "union") { #$conjunctive = "AND"; #} elsif ($query_type eq "join") { $conjunctive = "OR"; #} $select_string = "SELECT COUNT(*) from metadata_$row[0] where descriptor LIKE '%"; $select_string = $select_string . join("%' " . $conjunctive . " descriptor LIKE '%", @tags) . "%'"; #print $select_string . "\n"; my $sth2 = $dbh->prepare($select_string); $sth2->execute; while ((@row2) = $sth2->fetchrow_array) { if ($row2[0] > 0) { push @projects, $row[0]; } } } } return \@projects; }