Skip to content

Commit

Permalink
Merge pull request #335 from hlascelles/formalise-function-error-mess…
Browse files Browse the repository at this point in the history
…age-change

Formalise que_scheduler_check_job_exists function change
  • Loading branch information
hlascelles authored Apr 4, 2022
2 parents ff72f41 + 84c4312 commit db6b950
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
## Unreleased

- Formalise que_scheduler_check_job_exists function change [#334](https://github.com/hlascelles/que-scheduler/pull/335)
- Remove Ruby 2.5, Ruby 2.6 and Que 0.12.x support [#334](https://github.com/hlascelles/que-scheduler/pull/334)

## 4.2.2 (2022-02-23)
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ resque-scheduler files, but with additional features.
```ruby
class CreateQueSchedulerSchema < ActiveRecord::Migration
def change
Que::Scheduler::Migrations.migrate!(version: 6)
Que::Scheduler::Migrations.migrate!(version: 7)
end
end
```
Expand Down Expand Up @@ -211,7 +211,7 @@ performed.
```ruby
class CreateQueSchedulerSchema < ActiveRecord::Migration
def change
Que::Scheduler::Migrations.migrate!(version: 6)
Que::Scheduler::Migrations.migrate!(version: 7)
end
end
```
Expand Down
2 changes: 1 addition & 1 deletion lib/que/scheduler/migrations/6/up.sql
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ DECLARE
BEGIN
IF OLD.job_class = 'Que::Scheduler::SchedulerJob' THEN
IF NOT que_scheduler_check_job_exists() THEN
raise exception 'Deletion of que_scheduler job prevented. Deleting the que_scheduler job is almost certainly a mistake.';
raise exception 'Deletion of que_scheduler job % prevented. Deleting the que_scheduler job is almost certainly a mistake.', OLD.job_id;
END IF;
END IF;
RETURN OLD;
Expand Down
13 changes: 13 additions & 0 deletions lib/que/scheduler/migrations/7/down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
CREATE OR REPLACE FUNCTION que_scheduler_prevent_job_deletion() RETURNS TRIGGER AS
$BODY$
DECLARE
BEGIN
IF OLD.job_class = 'Que::Scheduler::SchedulerJob' THEN
IF NOT que_scheduler_check_job_exists() THEN
raise exception 'Deletion of que_scheduler job % prevented. Deleting the que_scheduler job is almost certainly a mistake.', OLD.job_id;
END IF;
END IF;
RETURN OLD;
END;
$BODY$
LANGUAGE 'plpgsql';
13 changes: 13 additions & 0 deletions lib/que/scheduler/migrations/7/up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
CREATE OR REPLACE FUNCTION que_scheduler_prevent_job_deletion() RETURNS TRIGGER AS
$BODY$
DECLARE
BEGIN
IF OLD.job_class = 'Que::Scheduler::SchedulerJob' THEN
IF NOT que_scheduler_check_job_exists() THEN
raise exception 'Deletion of que_scheduler job prevented. Deleting the que_scheduler job is almost certainly a mistake.';
END IF;
END IF;
RETURN OLD;
END;
$BODY$
LANGUAGE 'plpgsql';
8 changes: 8 additions & 0 deletions spec/que/scheduler/migrations_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ def check_index_existence(index_name, expect)
::Que::Scheduler::SchedulerJob.enqueue
::Que::Scheduler::StateChecks.check

expect(described_class.db_version).to eq(7)

# Check 7 change down
described_class.migrate!(version: 6)
expect(described_class.db_version).to eq(6)

migration_5_index = "index_que_scheduler_audit_on_scheduler_job_id"
Expand Down Expand Up @@ -110,6 +114,10 @@ def check_index_existence(index_name, expect)
described_class.migrate!(version: 6)
check_index_existence(migration_6_index, true)

# Check 7 change up
described_class.migrate!(version: 7)
expect(described_class.db_version).to eq(7)

Que::Scheduler::StateChecks.check
end
# rubocop:enable RSpec/MultipleExpectations
Expand Down

0 comments on commit db6b950

Please sign in to comment.