]> iEval git - gruntmaster-data.git/blobdiff - lib/Gruntmaster/Data/Result/Job.pm
Add non-DBIC versions of all methods and a benchmark script
[gruntmaster-data.git] / lib / Gruntmaster / Data / Result / Job.pm
index 66aed554fb875568f2eadd23e51539ddc7198351..b6abf02f3752212a4623807e929c91865a37e1ba 100644 (file)
@@ -6,7 +6,7 @@ package Gruntmaster::Data::Result::Job;
 
 =head1 NAME
 
-Gruntmaster::Data::Result::Job
+Gruntmaster::Data::Result::Job - List of jobs
 
 =cut
 
@@ -41,26 +41,36 @@ __PACKAGE__->table("jobs");
   data_type: 'text'
   is_nullable: 1
 
+hostname:PID of daemon that last executed this job. NULL if never executed
+
 =head2 date
 
   data_type: 'bigint'
   is_nullable: 0
 
+Unix time when job was submitted
+
 =head2 errors
 
   data_type: 'text'
   is_nullable: 1
 
+Compiler errors
+
 =head2 extension
 
   data_type: 'text'
   is_nullable: 0
 
+File extension of submitted program, without a leading dot
+
 =head2 format
 
   data_type: 'text'
   is_nullable: 0
 
+Format (programming language) of submitted program
+
 =head2 private
 
   data_type: 'boolean'
@@ -73,21 +83,34 @@ __PACKAGE__->table("jobs");
   is_foreign_key: 1
   is_nullable: 0
 
+=head2 reference
+
+  data_type: 'integer'
+  is_nullable: 1
+
+If not null, this is a reference solution that should get this result. For example, set reference=0 on jobs that should be accepted, reference=3 on jobs that should get TLE, etc
+
 =head2 result
 
   data_type: 'integer'
   is_nullable: 1
 
+Job result (integer constant from Gruntmaster::Daemon::Constants)
+
 =head2 result_text
 
   data_type: 'text'
   is_nullable: 1
 
+Job result (human-readable text)
+
 =head2 results
 
   data_type: 'text'
   is_nullable: 1
 
+Per-test results (JSON array of hashes with keys id (test number, counting from 1), result (integer constant from Gruntmaster::Daemon::Constants), result_text (human-readable text), time (execution time in decimal seconds))
+
 =head2 source
 
   data_type: 'text'
@@ -125,6 +148,8 @@ __PACKAGE__->add_columns(
   { data_type => "boolean", default_value => \"false", is_nullable => 0 },
   "problem",
   { data_type => "text", is_foreign_key => 1, is_nullable => 0 },
+  "reference",
+  { data_type => "integer", is_nullable => 1 },
   "result",
   { data_type => "integer", is_nullable => 1 },
   "result_text",
@@ -217,13 +242,28 @@ __PACKAGE__->has_many(
 );
 
 
-# Created by DBIx::Class::Schema::Loader v0.07042 @ 2014-12-11 23:51:27
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:D49ekK0vGg/7b8xXZoYTWQ
+# Created by DBIx::Class::Schema::Loader v0.07042 @ 2015-03-16 15:40:48
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aaVaCgk198pT0kBGMefkkA
+
+use Class::Method::Modifiers qw/after/;
+
+sub rawcontest { shift->get_column('contest') }
+sub rawowner { shift->get_column('owner') }
+sub rawproblem { shift->get_column('problem') }
 
 sub rerun {
        shift->update({daemon => undef, result => -2, result_text => undef});
 }
 
+after qw/insert update delete/ => sub {
+       my ($self) = @_;
+       Gruntmaster::Data::purge '/us/';
+       Gruntmaster::Data::purge '/us/' . $self->rawowner;
+       Gruntmaster::Data::purge '/st/' . $self->rawcontest if $self->rawcontest;
+       Gruntmaster::Data::purge '/log/';
+       Gruntmaster::Data::purge '/log/' . $self->id;
+};
+
 1;
 
 __END__
This page took 0.029626 seconds and 4 git commands to generate.