##################################################
-my $db = Gruntmaster::Data->connect('dbi:Pg:');
+my $dsn = $ENV{GRUNTMASTER_DSN} // 'dbi:Pg:';
+my $db = Gruntmaster::Data->connect($dsn);
sub cmd_help{
exec perldoc => $0
sub cmd_list{
local $, = "\n";
- say contests;
+ say map { $_->id } $db->contests->all;
}
sub cmd_show{
-# local $_ = shift or goto &cmd_list;
-# say "Name: ", contest_name;
-# say "Owner: ", contest_owner;
-# say "Start: ", strftime '%c', localtime contest_start;
-# say "End: ", strftime '%c', localtime contest_end;
+ my %columns = $db->contest(shift)->get_columns;
+ $columns{$_} = strftime '%c', localtime $columns{$_} for qw/start stop/;
+ print <<END
+Name: $columns{name}
+Owner: $columns{owner}
+Start: $columns{start}
+Stop: $columns{stop}
+END
}
sub cmd_add{
my $start = str2time prompt 'Start time' or die 'Cannot parse time';
my $stop = str2time prompt 'Stop time' or die 'Cannot parse time';
- $db->contests->create({id => $id, name => $name, owner => $owner, start => $start, stop => $stop});
-# insert_contest $id => name => $name, owner => $owner, start => $start, stop => $stop;
-# PUBLISH genpage => "ct/$id/index.html";
-# PUBLISH genpage => "ct/index.html";
+ $db->contests->create({id => $id, name => $name, owner => $owner, start => $start, stop => $stop})
}
sub cmd_rm{
-# remove_contest shift;
-# PUBLISH genpage => "ct/index.html";
+ $db->contest(shift)->delete
+}
+
+sub cmd_get{
+ my ($id, $col) = @_;
+ say $db->contest($id)->get_column($col)
+}
+
+sub cmd_set{
+ my ($id, %values) = @_;
+ $db->contest($id)->update(\%values)
}
##################################################
gruntmaster-contest show id
gruntmaster-contest add id
gruntmaster-contest rm id
+ gruntmaster-contest get id key
+ gruntmaster-contest set id key value
=head1 DESCRIPTION
=item B<rm> I<id>
-Removes the contest with id I<id>
+Removes the contest with id I<id>.
+
+=item B<set> I<id> I<key> I<value>
+
+Sets the I<key> configuration option of contest I<id> to I<value>.
+
+=item B<get> I<id> I<key>
+
+Get the value of the I<key> configuration option of contest I<id>.
=back
Copyright (C) 2014 by Marius Gavrilescu
-This library is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself, either Perl version 5.18.1 or,
+at your option, any later version of Perl 5 you may have available.
=cut