Enable bash strict mode in all shell scripts to catch errors early: - set -e: Exit immediately if a command exits with non-zero status - set -u: Treat unset variables as an error - set -o pipefail: Return value of a pipeline is the status of the last command to exit with non-zero status This prevents silent failures and makes debugging easier by failing fast when something goes wrong instead of continuing with potentially corrupted state.
58 lines
1.8 KiB
Bash
Executable File
58 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
echo "Prepare migration to 17.0..."
|
|
|
|
# Copy database
|
|
copy_database ou16 ou17 ou17 || exit 1
|
|
|
|
# Execute SQL pre-migration commands
|
|
PRE_MIGRATE_SQL=$(cat <<'EOF'
|
|
DO $$
|
|
DECLARE
|
|
plan_id INTEGER;
|
|
BEGIN
|
|
-- Check if the 'Projects' analytic plan exists
|
|
SELECT id INTO plan_id FROM account_analytic_plan WHERE name = 'Projects' LIMIT 1;
|
|
|
|
-- If it doesn't exist, create it
|
|
IF plan_id IS NULL THEN
|
|
INSERT INTO account_analytic_plan (name, complete_name, default_applicability, create_date, write_date)
|
|
VALUES ('Projects', 'migration_PROJECTS', 'optional', now(), now())
|
|
RETURNING id INTO plan_id;
|
|
END IF;
|
|
|
|
-- Delete existing system parameter (if any)
|
|
DELETE FROM ir_config_parameter WHERE key = 'analytic.project_plan';
|
|
|
|
-- Insert the system parameter with the correct plan ID
|
|
INSERT INTO ir_config_parameter (key, value, create_date, write_date)
|
|
VALUES ('analytic.project_plan', plan_id::text, now(), now());
|
|
END $$;
|
|
EOF
|
|
)
|
|
echo "SQL command = $PRE_MIGRATE_SQL"
|
|
query_postgres_container "$PRE_MIGRATE_SQL" ou17 || exit 1
|
|
|
|
PRE_MIGRATE_SQL_2=$(cat <<'EOF'
|
|
DELETE FROM ir_model_fields WHERE name = 'kanban_state_label';
|
|
EOF
|
|
)
|
|
echo "SQL command = $PRE_MIGRATE_SQL_2"
|
|
query_postgres_container "$PRE_MIGRATE_SQL_2" ou17 || exit 1
|
|
|
|
PRE_MIGRATE_SQL_3=$(cat <<'EOF'
|
|
DELETE FROM ir_model_fields WHERE name = 'phone' AND model='hr.employee';
|
|
DELETE FROM ir_model_fields WHERE name = 'hr_responsible_id' AND model='hr.job';
|
|
DELETE FROM ir_model_fields WHERE name = 'address_home_id' AND model='hr.employee';
|
|
DELETE FROM ir_model_fields WHERE name = 'manager_id' AND model='project.task';
|
|
EOF
|
|
)
|
|
echo "SQL command = $PRE_MIGRATE_SQL_3"
|
|
query_postgres_container "$PRE_MIGRATE_SQL_3" ou17 || exit 1
|
|
|
|
# Copy filestores
|
|
copy_filestore ou16 ou16 ou17 ou17 || exit 1
|
|
|
|
echo "Ready for migration to 17.0!"
|