=head1 NAME
-Gruntmaster::Data::Result::Problem
+Gruntmaster::Data::Result::Problem - List of problems
=cut
data_type: 'text'
is_nullable: 1
+Full name(s) of problem author(s)/problemsetter(s)/tester(s)/etc
+
=head2 writer
data_type: 'text'
is_nullable: 1
+Full name(s) of statement writer(s) (DEPRECATED)
+
=head2 generator
data_type: 'text'
is_nullable: 0
+Generator class, without the leading Gruntmaster::Daemon::Generator::
+
=head2 judge
data_type: 'text'
is_nullable: 0
+Judge class, without the leading Gruntmaster::Daemon::Judge::
+
=head2 level
data_type: 'text'
is_nullable: 0
+Problem level, one of beginner, easy, medium, hard
+
=head2 name
data_type: 'text'
data_type: 'integer'
is_nullable: 1
+Output limit (in bytes)
+
=head2 owner
data_type: 'text'
data_type: 'text'
is_nullable: 0
+Runner class, without the leading Gruntmaster::Daemon::Runner::
+
+=head2 solution
+
+ data_type: 'text'
+ is_nullable: 1
+
+Solution (HTML)
+
=head2 statement
data_type: 'text'
is_nullable: 0
+Statement (HTML)
+
=head2 testcnt
data_type: 'integer'
is_nullable: 0
+Number of tests
+
=head2 tests
data_type: 'text'
is_nullable: 1
+JSON array of test values for ::Runner::File
+
=head2 timeout
data_type: 'real'
is_nullable: 0
+Time limit (in seconds)
+
=head2 value
data_type: 'integer'
- is_nullable: 1
+ is_nullable: 0
+
+Problem value when used in a contest.
=head2 genformat
data_type: 'text'
is_nullable: 1
+Format (programming language) of the generator if using the Run generator
+
=head2 gensource
data_type: 'text'
is_nullable: 1
+Source code of generator if using the Run generator
+
=head2 verformat
data_type: 'text'
is_nullable: 1
+Format (programming language) of the verifier if using the Verifier runner
+
=head2 versource
data_type: 'text'
is_nullable: 1
+Source code of verifier if using the Verifier runner
+
=cut
__PACKAGE__->add_columns(
{ data_type => "boolean", default_value => \"false", is_nullable => 0 },
"runner",
{ data_type => "text", is_nullable => 0 },
+ "solution",
+ { data_type => "text", is_nullable => 1 },
"statement",
{ data_type => "text", is_nullable => 0 },
"testcnt",
"timeout",
{ data_type => "real", is_nullable => 0 },
"value",
- { data_type => "integer", is_nullable => 1 },
+ { data_type => "integer", is_nullable => 0 },
"genformat",
{ data_type => "text", is_nullable => 1 },
"gensource",
{ is_deferrable => 0, on_delete => "CASCADE", on_update => "NO ACTION" },
);
+=head2 problem_statuses
+
+Type: has_many
+
+Related object: L<Gruntmaster::Data::Result::ProblemStatus>
+
+=cut
+
+__PACKAGE__->has_many(
+ "problem_statuses",
+ "Gruntmaster::Data::Result::ProblemStatus",
+ { "foreign.problem" => "self.id" },
+ { cascade_copy => 0, cascade_delete => 0 },
+);
+
=head2 contests
Type: many_to_many
__PACKAGE__->many_to_many("contests", "contest_problems", "contest");
-# Created by DBIx::Class::Schema::Loader v0.07039 @ 2014-05-16 15:03:32
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:tvap77v0faSMxFiLu1uggQ
+# Created by DBIx::Class::Schema::Loader v0.07042 @ 2014-12-19 16:54:00
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:QZHyWOWaPmTm/EQ5M22CGA
sub is_private {
my ($self, $time) = @_;