hydra/src/lib/Hydra/Schema/Builds.pm

133 lines
3.9 KiB
Perl
Raw Normal View History

2008-11-25 11:01:42 +00:00
package Hydra::Schema::Builds;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components("Core");
2008-11-11 12:54:37 +00:00
__PACKAGE__->table("Builds");
__PACKAGE__->add_columns(
"id",
{ data_type => "integer", is_nullable => 0, size => undef },
2008-11-11 12:54:37 +00:00
"finished",
{ data_type => "integer", is_nullable => 0, size => undef },
"timestamp",
{ data_type => "integer", is_nullable => 0, size => undef },
2008-11-04 18:23:28 +00:00
"project",
{ data_type => "text", is_nullable => 0, size => undef },
"jobset",
{ data_type => "text", is_nullable => 0, size => undef },
"job",
{ data_type => "text", is_nullable => 0, size => undef },
2008-11-12 16:42:07 +00:00
"nixname",
{ data_type => "text", is_nullable => 0, size => undef },
"description",
{ data_type => "text", is_nullable => 0, size => undef },
"drvpath",
{ data_type => "text", is_nullable => 0, size => undef },
"outpath",
{ data_type => "text", is_nullable => 0, size => undef },
2008-11-06 18:26:29 +00:00
"system",
{ data_type => "text", is_nullable => 0, size => undef },
"longdescription",
{ data_type => "text", is_nullable => 0, size => undef },
"license",
{ data_type => "text", is_nullable => 0, size => undef },
"homepage",
{ data_type => "text", is_nullable => 0, size => undef },
);
__PACKAGE__->set_primary_key("id");
2008-11-25 11:01:42 +00:00
__PACKAGE__->belongs_to("project", "Hydra::Schema::Projects", { name => "project" });
2008-11-10 10:18:50 +00:00
__PACKAGE__->belongs_to(
"jobset",
2008-11-25 11:01:42 +00:00
"Hydra::Schema::Jobsets",
2008-11-10 10:18:50 +00:00
{ name => "jobset", project => "project" },
);
2009-03-13 14:49:25 +00:00
__PACKAGE__->belongs_to(
"job",
"Hydra::Schema::Jobs",
{ jobset => "jobset", name => "job", project => "project" },
);
2008-11-08 22:40:12 +00:00
__PACKAGE__->has_many(
2008-11-11 12:54:37 +00:00
"buildschedulinginfoes",
"Hydra::Schema::BuildSchedulingInfo",
2008-11-11 12:54:37 +00:00
{ "foreign.id" => "self.id" },
);
__PACKAGE__->has_many(
"buildresultinfoes",
"Hydra::Schema::BuildResultInfo",
2008-11-11 12:54:37 +00:00
{ "foreign.id" => "self.id" },
);
2008-11-12 16:42:07 +00:00
__PACKAGE__->has_many(
"buildsteps",
"Hydra::Schema::BuildSteps",
{ "foreign.build" => "self.id" },
2008-11-12 16:42:07 +00:00
);
2008-11-11 12:54:37 +00:00
__PACKAGE__->has_many(
"buildinputs_builds",
"Hydra::Schema::BuildInputs",
2008-11-09 00:48:36 +00:00
{ "foreign.build" => "self.id" },
2008-11-08 22:40:12 +00:00
);
2008-11-11 12:54:37 +00:00
__PACKAGE__->has_many(
"buildinputs_dependencies",
"Hydra::Schema::BuildInputs",
2008-11-11 12:54:37 +00:00
{ "foreign.dependency" => "self.id" },
);
__PACKAGE__->has_many(
2008-11-12 16:42:07 +00:00
"buildproducts",
"Hydra::Schema::BuildProducts",
2008-11-09 00:48:36 +00:00
{ "foreign.build" => "self.id" },
);
2009-03-13 14:49:25 +00:00
# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-03-13 13:33:20
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:xqKyjCWVdoTyQJC28K3WXA
2008-11-11 12:54:37 +00:00
use Hydra::Helper::Nix;
__PACKAGE__->has_many(dependents => 'Hydra::Schema::BuildInputs', 'dependency');
__PACKAGE__->many_to_many(dependentBuilds => 'dependents', 'build');
__PACKAGE__->has_many(inputs => 'Hydra::Schema::BuildInputs', 'build');
2008-11-11 12:54:37 +00:00
__PACKAGE__->belongs_to(
"schedulingInfo",
"Hydra::Schema::BuildSchedulingInfo",
2008-11-11 12:54:37 +00:00
{ id => "id" },
);
__PACKAGE__->belongs_to(
"resultInfo",
"Hydra::Schema::BuildResultInfo",
2008-11-11 12:54:37 +00:00
{ id => "id" },
);
2008-11-06 13:40:31 +00:00
if (getHydraPath =~ m/^dbi:Pg/) {
__PACKAGE__->sequence('builds_id_seq');
}
sub makeSource {
my ($name, $query) = @_;
my $source = __PACKAGE__->result_source_instance();
my $new_source = $source->new($source);
$new_source->source_name($name);
$new_source->name(\ "($query)");
Hydra::Schema->register_extra_source($name => $new_source);
}
sub makeQueries {
my ($name, $constraint) = @_;
makeSource('JobStatus' . $name, "select * from (select project, jobset, job, system, max(id) as id from Builds where finished = 1 $constraint group by project, jobset, job, system) as a natural join Builds");
makeSource('LatestSucceeded' . $name, "select * from (select project, jobset, job, system, max(id) as id from Builds natural join BuildResultInfo where finished = 1 and buildStatus = 0 $constraint group by project, jobset, job, system) as a natural join Builds");
}
makeQueries('', "");
makeQueries('ForProject', "and project = ?");
makeQueries('ForJobset', "and project = ? and jobset = ?");
makeQueries('ForJob', "and project = ? and jobset = ? and job = ?");
1;