Bump version and add changelog entry
[gruntmaster-data.git] / lib / Gruntmaster / Data.pm
CommitLineData
4ed3f8e7 1use utf8;
bbf8209c 2package Gruntmaster::Data;
4ed3f8e7
MG
3
4# Created by DBIx::Class::Schema::Loader
5# DO NOT MODIFY THE FIRST PART OF THIS FILE
6
7use strict;
bbf8209c 8use warnings;
014ee8a6 9
4ed3f8e7
MG
10use base 'DBIx::Class::Schema';
11
12__PACKAGE__->load_namespaces;
014ee8a6 13
f7386aab 14
4ed3f8e7
MG
15# Created by DBIx::Class::Schema::Loader v0.07039 @ 2014-03-05 13:11:39
16# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dAEmtAexvUaNXLgYz2rNEg
17
4af36c88 18our $VERSION = '5999.000_004';
4ed3f8e7
MG
19
20use Lingua::EN::Inflect qw/PL_N/;
21use Sub::Name qw/subname/;
014ee8a6
MG
22
23sub dynsub{
fb6a4e3d 24 our ($name, $sub) = @_;
014ee8a6 25 no strict 'refs';
fb6a4e3d 26 *$name = subname $name => $sub
014ee8a6
MG
27}
28
29BEGIN {
4ed3f8e7
MG
30 for my $rs (qw/contest contest_problem job open problem user/) {
31 my $rsname = ucfirst $rs;
32 $rsname =~ s/_([a-z])/\u$1/g;
33 dynsub PL_N($rs) => sub { $_[0]->resultset($rsname) };
34 dynsub $rs => sub { $_[0]->resultset($rsname)->find($_[1]) };
014ee8a6
MG
35 }
36}
37
f7386aab 381;
4a8747ef
MG
39
40__END__
41
42=encoding utf-8
43
44=head1 NAME
45
46Gruntmaster::Data - Gruntmaster 6000 Online Judge -- database interface and tools
47
48=head1 SYNOPSIS
49
50 my $db = Gruntmaster::Data->connect('dbi:Pg:');
cbb36c78
MG
51
52 my $problem = $db->problem('my_problem');
53 $problem->update({timeout => 2.5}); # Set time limit to 2.5 seconds
54 $problem->rerun; # And rerun all jobs for this problem
55
56 # ...
57
58 my $contest = $db->contests->create({ # Create a new contest
59 id => 'my_contest',
60 name => 'My Awesome Contest',
61 start => time + 100,
62 end => time + 1900,
63 });
64 $db->contest_problems->create({ # Add a problem to the contest
65 contest => 'my_contest',
66 problem => 'my_problem',
67 });
68
69 say 'The contest has not started yet' if $contest->is_pending;
70
71 # ...
72
73 my @jobs = $db->jobs->search({contest => 'my_contest', owner => 'MGV'})->all;
74 $_->rerun for @jobs; # Rerun all jobs sent by MGV in my_contest
4a8747ef
MG
75
76=head1 DESCRIPTION
77
cbb36c78
MG
78Gruntmaster::Data is the interface to the Gruntmaster 6000 database. Read the L<DBIx::Class> documentation for usage information.
79
80In addition to the typical DBIx::Class::Schema methods, this module contains several convenience methods:
81
82=over
83
84=item contests
85
86Equivalent to C<< $schema->resultset('Contest') >>
87
88=item contest_problems
89
90Equivalent to C<< $schema->resultset('ContestProblem') >>
91
92=item jobs
93
94Equivalent to C<< $schema->resultset('Job') >>
95
96=item problems
97
98Equivalent to C<< $schema->resultset('Problem') >>
99
100=item users
101
102Equivalent to C<< $schema->resultset('User') >>
103
104=item contest($id)
105
106Equivalent to C<< $schema->resultset('Contest')->find($id) >>
107
108=item job($id)
109
110Equivalent to C<< $schema->resultset('Job')->find($id) >>
111
112=item problem($id)
113
114Equivalent to C<< $schema->resultset('Problem')->find($id) >>
115
116=item user($id)
117
118Equivalent to C<< $schema->resultset('User')->find($id) >>
119
120=back
4a8747ef
MG
121
122=head1 AUTHOR
123
124Marius Gavrilescu E<lt>marius@ieval.roE<gt>
125
126=head1 COPYRIGHT AND LICENSE
127
128Copyright (C) 2014 by Marius Gavrilescu
129
9d2e740e
MG
130This library is free software; you can redistribute it and/or modify
131it under the same terms as Perl itself, either Perl version 5.18.1 or,
132at your option, any later version of Perl 5 you may have available.
4a8747ef
MG
133
134
135=cut
This page took 0.01827 seconds and 4 git commands to generate.