From 34acb76a21c01c849283efe066d10d5ee78cd9e5 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 15 Mar 2021 15:33:03 -0300 Subject: [PATCH] Bug 27069: Update existing rules This patch adds an atomic update file that takes care of translating existing rules. It constrains the rules to translate to those currently expected by Koha and leaves any other value out. To test: 1. Have some manually added rules: $ koha-mysql kohadev > INSERT INTO circulation_rules (rule_name,rule_value) VALUES ('holdallowed', -1); > INSERT INTO circulation_rules (rule_name,rule_value) VALUES ('holdallowed', 1); > INSERT INTO circulation_rules (rule_name,rule_value) VALUES ('holdallowed', 2); > INSERT INTO circulation_rules (rule_name,rule_value) VALUES ('holdallowed', 3); > INSERT INTO circulation_rules (rule_name,rule_value) VALUES ('holdallowed', 0); > INSERT INTO circulation_rules (rule_name,rule_value) VALUES ('holdallowed', 4); 2. Apply this patch 3. Run: $ updatedatabase => SUCCESS: It doesn't explode 4. Verify the created rules were updated correctly: > SELECT * FROM circulation_rules WHERE rule_name='holdallowed'; 5: Verify all the tests that dealt with this rule still pass! $ kshell k$ git diff origin/master --name-only | grep -e '\.t$' | \ xargs prove => SUCCESS: Tests pass! 6. Verify the UI handles setting things correctly 7. Sign off :-D Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall Signed-off-by: Jonathan Druart --- .../data/mysql/atomicupdate/bug_27069.perl | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 installer/data/mysql/atomicupdate/bug_27069.perl diff --git a/installer/data/mysql/atomicupdate/bug_27069.perl b/installer/data/mysql/atomicupdate/bug_27069.perl new file mode 100644 index 0000000000..854c051346 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_27069.perl @@ -0,0 +1,17 @@ +$DBversion = 'XXX'; +if( CheckVersion( $DBversion ) ) { + + $dbh->do(q{ + UPDATE circulation_rules + SET + rule_value = CASE + WHEN rule_value='0' THEN 'not_allowed' + WHEN rule_value='1' THEN 'from_home_library' + WHEN rule_value='2' THEN 'from_any_library' + WHEN rule_value='3' THEN 'from_local_hold_group' + END + WHERE rule_name='holdallowed' AND rule_value >= 0 AND rule_value <= 3; + }); + + NewVersion( $DBversion, 27069, "Change holdallowed values from numbers to strings"); +}