2008-11-25 11:01:42 +00:00
package Hydra::Schema::Builds ;
2008-10-28 10:19:31 +00:00
use strict ;
use warnings ;
use base 'DBIx::Class' ;
__PACKAGE__ - > load_components ( "Core" ) ;
2008-11-11 12:54:37 +00:00
__PACKAGE__ - > table ( "Builds" ) ;
2008-10-28 10:19:31 +00:00
__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 } ,
2008-10-28 10:19:31 +00:00
"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 } ,
2009-03-12 14:18:30 +00:00
"job" ,
2008-10-28 10:19:31 +00:00
{ 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 } ,
2008-10-28 10:19:31 +00:00
"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 } ,
2008-12-16 15:09:39 +00:00
"longdescription" ,
{ data_type = > "text" , is_nullable = > 0 , size = > undef } ,
"license" ,
{ data_type = > "text" , is_nullable = > 0 , size = > undef } ,
2009-03-04 14:49:21 +00:00
"homepage" ,
{ data_type = > "text" , is_nullable = > 0 , size = > undef } ,
2008-10-28 10:19:31 +00:00
) ;
__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" ,
2008-12-16 16:26:33 +00:00
"Hydra::Schema::BuildSchedulingInfo" ,
2008-11-11 12:54:37 +00:00
{ "foreign.id" = > "self.id" } ,
) ;
__PACKAGE__ - > has_many (
"buildresultinfoes" ,
2008-12-16 16:26:33 +00:00
"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" ,
2008-12-16 16:26:33 +00:00
"Hydra::Schema::BuildSteps" ,
2009-03-12 14:18:30 +00:00
{ "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" ,
2008-12-16 16:26:33 +00:00
"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" ,
2008-12-16 16:26:33 +00:00
"Hydra::Schema::BuildInputs" ,
2008-11-11 12:54:37 +00:00
{ "foreign.dependency" = > "self.id" } ,
) ;
2008-10-28 10:19:31 +00:00
__PACKAGE__ - > has_many (
2008-11-12 16:42:07 +00:00
"buildproducts" ,
2008-12-16 16:26:33 +00:00
"Hydra::Schema::BuildProducts" ,
2008-11-09 00:48:36 +00:00
{ "foreign.build" = > "self.id" } ,
2008-10-28 10:19:31 +00:00
) ;
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
2008-12-16 16:26:33 +00:00
__PACKAGE__ - > has_many ( dependents = > 'Hydra::Schema::BuildInputs' , 'dependency' ) ;
2008-10-28 10:19:31 +00:00
2008-11-27 15:16:06 +00:00
__PACKAGE__ - > many_to_many ( dependentBuilds = > 'dependents' , 'build' ) ;
2008-12-16 16:26:33 +00:00
__PACKAGE__ - > has_many ( inputs = > 'Hydra::Schema::BuildInputs' , 'build' ) ;
2008-11-11 12:54:37 +00:00
__PACKAGE__ - > belongs_to (
"schedulingInfo" ,
2008-12-16 16:26:33 +00:00
"Hydra::Schema::BuildSchedulingInfo" ,
2008-11-11 12:54:37 +00:00
{ id = > "id" } ,
) ;
__PACKAGE__ - > belongs_to (
"resultInfo" ,
2008-12-16 16:26:33 +00:00
"Hydra::Schema::BuildResultInfo" ,
2008-11-11 12:54:37 +00:00
{ id = > "id" } ,
) ;
2008-11-06 13:40:31 +00:00
2009-05-07 13:30:55 +00:00
if ( $ ENV { "HYDRA_DBI" } =~ m/^dbi:Pg/ ) {
__PACKAGE__ - > sequence ( 'builds_id_seq' ) ;
}
2009-04-03 15:37:21 +00:00
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 ) = @ _ ;
2009-04-28 14:21:33 +00:00
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" ) ;
2009-04-03 15:37:21 +00:00
}
makeQueries ( '' , "" ) ;
makeQueries ( 'ForProject' , "and project = ?" ) ;
makeQueries ( 'ForJobset' , "and project = ? and jobset = ?" ) ;
makeQueries ( 'ForJob' , "and project = ? and jobset = ? and job = ?" ) ;
2008-10-28 10:19:31 +00:00
1 ;