]>
iEval git - gruntmaster-data.git/blob - lib/Gruntmaster/Data/Result/Problem.pm
6b9b3bfff02ae3156c9332d5aa4cd0c35ed00641
2 package Gruntmaster
::Data
::Result
::Problem
;
4 # Created by DBIx::Class::Schema::Loader
5 # DO NOT MODIFY THE FIRST PART OF THIS FILE
9 Gruntmaster::Data::Result::Problem - List of problems
16 use base
'DBIx::Class::Core';
18 =head1 TABLE: C<problems>
22 __PACKAGE__
->table("problems");
36 Full name(s) of problem author(s)/problemsetter(s)/tester(s)/etc
43 Full name(s) of statement writer(s) (DEPRECATED)
50 Generator class, without the leading Gruntmaster::Daemon::Generator::
57 Judge class, without the leading Gruntmaster::Daemon::Judge::
64 Problem level, one of beginner, easy, medium, hard
76 Output limit (in bytes)
95 Runner class, without the leading Gruntmaster::Daemon::Runner::
123 JSON array of test values for ::Runner::File
130 Time limit (in seconds)
137 Problem value when used in a contest.
144 Format (programming language) of the generator if using the Run generator
151 Source code of generator if using the Run generator
158 Format (programming language) of the verifier if using the Verifier runner
165 Source code of verifier if using the Verifier runner
169 __PACKAGE__
->add_columns(
171 { data_type
=> "text", is_nullable
=> 0 },
173 { data_type
=> "text", is_nullable
=> 1 },
175 { data_type
=> "text", is_nullable
=> 1 },
177 { data_type
=> "text", is_nullable
=> 0 },
179 { data_type
=> "text", is_nullable
=> 0 },
181 { data_type
=> "text", is_nullable
=> 0 },
183 { data_type
=> "text", is_nullable
=> 0 },
185 { data_type
=> "integer", is_nullable
=> 1 },
187 { data_type
=> "text", is_foreign_key
=> 1, is_nullable
=> 0 },
189 { data_type
=> "boolean", default_value
=> \"false
", is_nullable => 0 },
191 { data_type => "text
", is_nullable => 0 },
193 { data_type => "text
", is_nullable => 1 },
195 { data_type => "text
", is_nullable => 0 },
197 { data_type => "integer
", is_nullable => 0 },
199 { data_type => "text
", is_nullable => 1 },
201 { data_type => "real
", is_nullable => 0 },
203 { data_type => "integer
", is_nullable => 0 },
205 { data_type => "text
", is_nullable => 1 },
207 { data_type => "text
", is_nullable => 1 },
209 { data_type => "text
", is_nullable => 1 },
211 { data_type => "text
", is_nullable => 1 },
224 __PACKAGE__->set_primary_key("id
");
228 =head2 contest_problems
232 Related object: L<Gruntmaster::Data::Result::ContestProblem>
236 __PACKAGE__->has_many(
238 "Gruntmaster
::Data
::Result
::ContestProblem
",
239 { "foreign
.problem
" => "self
.id
" },
240 { cascade_copy => 0, cascade_delete => 0 },
247 Related object: L<Gruntmaster::Data::Result::Job>
251 __PACKAGE__->has_many(
253 "Gruntmaster
::Data
::Result
::Job
",
254 { "foreign
.problem
" => "self
.id
" },
255 { cascade_copy => 0, cascade_delete => 0 },
262 Related object: L<Gruntmaster::Data::Result::Open>
266 __PACKAGE__->has_many(
268 "Gruntmaster
::Data
::Result
::Open
",
269 { "foreign
.problem
" => "self
.id
" },
270 { cascade_copy => 0, cascade_delete => 0 },
277 Related object: L<Gruntmaster::Data::Result::User>
281 __PACKAGE__->belongs_to(
283 "Gruntmaster
::Data
::Result
::User
",
285 { is_deferrable => 0, on_delete => "CASCADE
", on_update => "NO ACTION
" },
288 =head2 problem_statuses
292 Related object: L<Gruntmaster::Data::Result::ProblemStatus>
296 __PACKAGE__->has_many(
298 "Gruntmaster
::Data
::Result
::ProblemStatus
",
299 { "foreign
.problem
" => "self
.id
" },
300 { cascade_copy => 0, cascade_delete => 0 },
307 Composing rels: L</contest_problems> -> contest
311 __PACKAGE__->many_to_many("contests
", "contest_problems
", "contest
");
314 # Created by DBIx::Class::Schema::Loader v0.07042 @ 2014-12-19 16:54:00
315 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:QZHyWOWaPmTm/EQ5M22CGA
317 use Class::Method::Modifiers qw/after/;
319 after qw/insert update delete/ => sub {
321 Gruntmaster::Data::purge '/pb/';
322 Gruntmaster::Data::purge '/pb/' . $self->id;
323 Gruntmaster::Data::purge '/sol/' . $self->id;
327 my ($self, $time) = @_;
328 return 1 if $self->private;
329 grep { $_->contest->is_pending($time) } $self->contest_problems;
333 my ($self, $time) = @_;
334 0 == grep { $_->contest->is_running($time) } $self->contest_problems;
338 $_->rerun for shift->jobs
347 =head2 is_private(I<[$time]>)
349 Returns true if the problem is private at time I<$time> (which defaults to C<time>).
351 =head2 is_in_archive(I<[$time]>)
353 Returns true if the problem is in the archive at time I<$time> (which defaults to C<time>).
357 Reruns all jobs for this problem.
361 Marius Gavrilescu E<lt>marius@ieval.roE<gt>
363 =head1 COPYRIGHT AND LICENSE
365 Copyright (C) 2014 by Marius Gavrilescu
367 This library is free software; you can redistribute it and/or modify
368 it under the same terms as Perl itself, either Perl version 5.18.1 or,
369 at your option, any later version of Perl 5 you may have available.
This page took 0.059867 seconds and 3 git commands to generate.