From bd411829b473ac419c9b7a1b579199bc9e9a2e4c 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 --- .../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 00000000000..854c051346f --- /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"); +} -- 2.30.2