From 672eac1ffb7aaf62c651ee63cf069c8826dfca41 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Mon, 24 Jan 2011 21:29:11 +0100 Subject: add version to our schema --- lib/jitterbug/Schema.pm | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/jitterbug/Schema.pm') diff --git a/lib/jitterbug/Schema.pm b/lib/jitterbug/Schema.pm index 5014c12..5b42275 100644 --- a/lib/jitterbug/Schema.pm +++ b/lib/jitterbug/Schema.pm @@ -1,6 +1,8 @@ package jitterbug::Schema; use base qw/DBIx::Class::Schema/; +our $VERSION = '2'; + __PACKAGE__->load_namespaces(); 1; -- cgit 1.4.1 From 207eb36a76f53e35fbbbb9ef5f5ed7e1ddae8c59 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Sun, 13 Feb 2011 13:56:53 +0100 Subject: prepare to update schema again --- lib/jitterbug/Schema.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/jitterbug/Schema.pm') diff --git a/lib/jitterbug/Schema.pm b/lib/jitterbug/Schema.pm index 5b42275..f47d7e9 100644 --- a/lib/jitterbug/Schema.pm +++ b/lib/jitterbug/Schema.pm @@ -1,7 +1,7 @@ package jitterbug::Schema; use base qw/DBIx::Class::Schema/; -our $VERSION = '2'; +our $VERSION = '3'; __PACKAGE__->load_namespaces(); -- cgit 1.4.1 From e03879fe743957c24949000d078f4ffe0d2ef02c Mon Sep 17 00:00:00 2001 From: franck cuny Date: Sun, 13 Feb 2011 16:20:09 +0100 Subject: inside the hook, we check if we can add more than one task for this project the schema is updated to remove the constraint --- lib/jitterbug/Hook.pm | 22 +++++++++++++++++++--- lib/jitterbug/Schema.pm | 2 +- lib/jitterbug/Schema/Result/Task.pm | 1 - 3 files changed, 20 insertions(+), 5 deletions(-) (limited to 'lib/jitterbug/Schema.pm') diff --git a/lib/jitterbug/Hook.pm b/lib/jitterbug/Hook.pm index bf483d5..fe27921 100644 --- a/lib/jitterbug/Hook.pm +++ b/lib/jitterbug/Hook.pm @@ -21,16 +21,20 @@ post '/' => sub { my $repo = $payload->{repository}->{name}; my $ref = $payload->{ref}; - my $authorized = _authorized_branch( $repo, $ref ); - if ( !$authorized ) { + if ( !_authorized_branch( $repo, $ref ) ) { debug("this branch is not authorized"); status 200; return; } my $project = schema->resultset('Project')->find( { name => $repo } ); + $project = _create_new_project( $repo, $payload ) if !$project; - $project = _create_new_project($repo, $payload) if !$project; + if ( !_slot_available_for_task( $project->id ) ) { + debug("task already present for this project"); + status 200; + return; + } my $last_commit = pop @{ $payload->{commits} }; $last_commit->{compare} = $payload->{compare}; @@ -92,6 +96,18 @@ sub _create_new_project { return $project; } +sub _slot_available_for_task { + my $project_id = shift; + + # is there already a task for this project, and could we stack ? + my $jtbg_settings = setting('jitterbug') || {}; + my $stack_option = $jtbg_settings->{options}->{stack_tasks}; + my $total_task = + schema->resultset('Task')->search( { projectid => $project_id } )->count; + + ( $total_task && !$stack_option) ? return 0 : return 1; +} + sub _insert_commit { my ($commit, $project) = @_; diff --git a/lib/jitterbug/Schema.pm b/lib/jitterbug/Schema.pm index f47d7e9..c671d78 100644 --- a/lib/jitterbug/Schema.pm +++ b/lib/jitterbug/Schema.pm @@ -1,7 +1,7 @@ package jitterbug::Schema; use base qw/DBIx::Class::Schema/; -our $VERSION = '3'; +our $VERSION = '4'; __PACKAGE__->load_namespaces(); diff --git a/lib/jitterbug/Schema/Result/Task.pm b/lib/jitterbug/Schema/Result/Task.pm index 2eaed62..ad880d8 100644 --- a/lib/jitterbug/Schema/Result/Task.pm +++ b/lib/jitterbug/Schema/Result/Task.pm @@ -25,7 +25,6 @@ __PACKAGE__->add_columns( ); __PACKAGE__->set_primary_key('taskid'); -__PACKAGE__->add_unique_constraint( [qw/projectid/] ); __PACKAGE__->add_unique_constraint( [qw/sha256/] ); __PACKAGE__->belongs_to( project => 'jitterbug::Schema::Result::Project', -- cgit 1.4.1