add Doubly Resolvable RC Design
[sgn.git] / db / 00140 / CreateProjectOwnerTable.pm
blobc6e46fe25b41d581ddd40bf8b5fbc3a00f7e6a26
1 #!/usr/bin/env perl
4 =head1 NAME
6 CreateProjectOwnerTable.pm
8 =head1 SYNOPSIS
10 mx-run CreateProjectOwnerTable [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.
15 =head1 DESCRIPTION
17 This patch creates the phenome.project_owner table used for storing sp_person_id of hte person who created the trial
19 This subclass uses L<Moose>. The parent class uses L<MooseX::Runnable>
21 =head1 AUTHOR
24 =head1 COPYRIGHT & LICENSE
26 Copyright 2010 Boyce Thompson Institute for Plant Research
28 This program is free software; you can redistribute it and/or modify
29 it under the same terms as Perl itself.
31 =cut
34 package CreateProjectOwnerTable;
36 use Moose;
38 extends 'CXGN::Metadata::Dbpatch';
40 has '+description' => ( default => <<'');
41 This patch creates a phenome.project_owner table used for assigning sp_person_id to created trials
44 has '+prereq' => (
45 default => sub {
46 [],
50 sub patch {
51 my $self=shift;
53 print STDOUT "Executing the patch:\n " . $self->name . ".\n\nDescription:\n ". $self->description . ".\n\nExecuted by:\n " . $self->username . " .";
55 print STDOUT "\nChecking if this db_patch was executed before or if previous db_patches have been executed.\n";
57 print STDOUT "\nExecuting the SQL commands.\n";
59 $self->dbh->do(<<EOSQL);
61 -- table definition
62 CREATE TABLE IF NOT EXISTS phenome.project_owner (
63 "project_owner_id" SERIAL PRIMARY KEY,
64 "project_id" integer REFERENCES public.project NOT NULL,
65 "sp_person_id" integer REFERENCES sgn_people.sp_person NOT NULL,
66 "create_date" timestamp default now()
70 -- grant usage to web_usr
71 GRANT ALL on phenome.project_owner to web_usr;
72 GRANT USAGE ON phenome.project_owner_project_owner_id_seq to web_usr;
74 EOSQL
76 print "You're done!\n";
80 ####
81 1; #
82 ####