#!/usr/bin/perl use strict; use lib "/usr/local/etc/picnx/perl"; use Carp; use Config::General; use DBI; use LinuxPicnic::RSVPSchema; { # read configuration my $configfile; foreach my $path ( "/etc/picnx/rsvp-config", "/usr/local/etc/picnx/rsvp-config", $ENV{PICNX_RSVP_CONFIG} ) { if ( -f $path ) { $configfile = $path; last; } } if ( !defined $configfile ) { die "$0: config file not found"; } my $conf = Config::General->new( -UseApacheInclude => 1, -IncludeRelative => 1, -IncludeDirectories => 1, -IncludeGlob => 1, -BackslashEscape => 1, -ConfigFile => $configfile ); my %config = $conf->getall(); # create tables my $dbh = DBI->connect( $config{connection}{db}, $config{connection}{user}, $config{connection}{pw}, { RaiseError => 1, AutoCommit => 0 }) or die "$0: DBI connect failed; $DBI::errstr\n"; foreach my $table ( @LinuxPicnic::RSVPSchema::creation_order ) { my $sql = $LinuxPicnic::RSVPSchema::sql{$table}; print STDERR "creating $table...\n"; $dbh->do($sql) or die "$table do: ".$dbh->errstr."\n"; $dbh->commit or die "$table commit: ".$dbh->errstr."\n"; } $dbh->disconnect or die "DBI disconnect failed: ".$dbh->errstr."\n"; } # open database with LinuxPicnic::RSVP print STDERR "beginning inserts...\n"; require LinuxPicnic::RSVP or die "failed to read LinuxPicnic::RSVP: $!\n"; my $name; # populate table of known cities print STDERR " city...\n"; foreach $name ( "none selected", "Sunnyvale, CA", "San Jose, CA", "San Francisco, CA", "Oakland, CA", "Santa Clara, CA", "Mountain View, CA", "Milpitas, CA", "Fremont, CA", "Campbell, CA" ) { LinuxPicnic::RSVP::City->insert( { name => $name } ) or die "insert failed on city $name\n"; } # populate table of grill selection print STDERR " grill...\n"; foreach $name ( "burger", "hotdog", "veggie", "byo" ) { LinuxPicnic::RSVP::GrillSelection->insert( { name => $name } ) or die "insert failed on grill $name\n"; } # populate table of shuttle pickup locations print STDERR " shuttle...\n"; foreach $name ( "none selected", "Crossman VTA light rail station", "Sunnyvale Caltrain station", "Great America Amtrak station", "Old Ironsides VTA bus/light rail station" ) { LinuxPicnic::RSVP::ShuttleLoc->insert( { name => $name } ) or die "insert failed on shuttle $name\n"; } # populate table of RSVP states print STDERR " status...\n"; foreach $name ( "unconfirmed", "confirmed", "expired", "canceled" ) { LinuxPicnic::RSVP::Status->insert( { name => $name } ) or die "insert failed on status $name\n"; } # populate table of travel modes print STDERR " travel modes...\n"; foreach $name ( "none selected", "drive", "bicycle", "walk", "transit", "airline", "general aviation" ) { LinuxPicnic::RSVP::TravelMode->insert( { name => $name } ) or die "insert failed on travel mode $name\n"; } # populate table of t-shirt sizes print STDERR " t-shirt size...\n"; foreach $name ( "none", "S", "M", "L", "XL", "XXL", "XXXL" ) { LinuxPicnic::RSVP::TShirtSize->insert( { name => $name } ) or die "insert failed on t-shirt $name\n"; } exit 0;