Perform various DB migration fixes and improvements

This commit is contained in:
Alex Tselegidis 2022-03-29 10:35:50 +02:00
parent efc532664a
commit 0564ded317
21 changed files with 254 additions and 180 deletions

View file

@ -17,10 +17,13 @@ class Migration_Add_time_format_setting extends EA_Migration {
*/ */
public function up() public function up()
{ {
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'time_format'])->num_rows())
'name' => 'time_format', {
'value' => 'regular' $this->db->insert('settings', [
]); 'name' => 'time_format',
'value' => 'regular'
]);
}
} }
/** /**
@ -28,6 +31,9 @@ class Migration_Add_time_format_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
$this->db->delete('settings', ['name' => 'time_format']); if ($this->db->get_where('settings', ['name' => 'time_format'])->num_rows())
{
$this->db->delete('settings', ['name' => 'time_format']);
}
} }
} }

View file

@ -17,80 +17,102 @@ class Migration_Legal_contents extends EA_Migration {
*/ */
public function up() public function up()
{ {
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'display_cookie_notice'])->num_rows())
'name' => 'display_cookie_notice', {
'value' => '0' $this->db->insert('settings', [
]); 'name' => 'display_cookie_notice',
'value' => '0'
]);
}
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'cookie_notice_content'])->num_rows())
'name' => 'cookie_notice_content', {
'value' => 'Cookie notice content.' $this->db->insert('settings', [
]); 'name' => 'cookie_notice_content',
'value' => 'Cookie notice content.'
]);
}
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'display_terms_and_conditions'])->num_rows())
'name' => 'display_terms_and_conditions', {
'value' => '0' $this->db->insert('settings', [
]); 'name' => 'display_terms_and_conditions',
'value' => '0'
]);
}
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'terms_and_conditions_content'])->num_rows())
'name' => 'terms_and_conditions_content', {
'value' => 'Terms and conditions content.' $this->db->insert('settings', [
]); 'name' => 'terms_and_conditions_content',
'value' => 'Terms and conditions content.'
]);
}
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'display_privacy_policy'])->num_rows())
'name' => 'display_privacy_policy', {
'value' => '0' $this->db->insert('settings', [
]); 'name' => 'display_privacy_policy',
'value' => '0'
]);
}
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'privacy_policy_content'])->num_rows())
'name' => 'privacy_policy_content', {
'value' => 'Privacy policy content.' $this->db->insert('settings', [
]); 'name' => 'privacy_policy_content',
'value' => 'Privacy policy content.'
]);
}
$this->dbforge->add_field([
'id' => [
'type' => 'INT',
'constraint' => 11,
'auto_increment' => TRUE
],
'created' => [
'type' => 'TIMESTAMP',
'null' => TRUE
],
'modified' => [
'type' => 'TIMESTAMP',
'null' => TRUE
],
'first_name' => [
'type' => 'VARCHAR',
'constraint' => '256',
'null' => TRUE,
],
'last_name' => [
'type' => 'VARCHAR',
'constraint' => '256',
'null' => TRUE,
],
'email' => [
'type' => 'VARCHAR',
'constraint' => '512',
'null' => TRUE,
],
'ip' => [
'type' => 'VARCHAR',
'constraint' => '256',
'null' => TRUE,
],
'type' => [
'type' => 'VARCHAR',
'constraint' => '256',
'null' => TRUE,
],
]);
$this->dbforge->add_key('id', TRUE); if ( ! $this->db->table_exists('consents'))
{
$this->dbforge->add_field([
'id' => [
'type' => 'INT',
'constraint' => 11,
'auto_increment' => TRUE
],
'created' => [
'type' => 'TIMESTAMP',
'null' => TRUE
],
'modified' => [
'type' => 'TIMESTAMP',
'null' => TRUE
],
'first_name' => [
'type' => 'VARCHAR',
'constraint' => '256',
'null' => TRUE,
],
'last_name' => [
'type' => 'VARCHAR',
'constraint' => '256',
'null' => TRUE,
],
'email' => [
'type' => 'VARCHAR',
'constraint' => '512',
'null' => TRUE,
],
'ip' => [
'type' => 'VARCHAR',
'constraint' => '256',
'null' => TRUE,
],
'type' => [
'type' => 'VARCHAR',
'constraint' => '256',
'null' => TRUE,
],
]);
$this->dbforge->create_table('consents', TRUE, ['engine' => 'InnoDB']); $this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('consents', TRUE, ['engine' => 'InnoDB']);
}
} }
/** /**
@ -98,30 +120,51 @@ class Migration_Legal_contents extends EA_Migration {
*/ */
public function down() public function down()
{ {
$this->db->delete('settings', [ if ($this->db->get_where('settings', ['name' => 'display_cookie_notice'])->num_rows())
'name' => 'display_cookie_notice' {
]); $this->db->delete('settings', [
'name' => 'display_cookie_notice'
]);
}
$this->db->delete('settings', [ if ($this->db->get_where('settings', ['name' => 'cookie_notice_content'])->num_rows())
'name' => 'cookie_notice_content' {
]); $this->db->delete('settings', [
'name' => 'cookie_notice_content'
]);
}
$this->db->delete('settings', [ if ($this->db->get_where('settings', ['name' => 'display_terms_and_conditions'])->num_rows())
'name' => 'display_terms_and_conditions' {
]); $this->db->delete('settings', [
'name' => 'display_terms_and_conditions'
]);
}
$this->db->delete('settings', [ if ($this->db->get_where('settings', ['name' => 'terms_and_conditions_content'])->num_rows())
'name' => 'terms_and_conditions_content' {
]); $this->db->delete('settings', [
'name' => 'terms_and_conditions_content'
]);
}
$this->db->delete('settings', [ if ($this->db->get_where('settings', ['name' => 'display_privacy_policy'])->num_rows())
'name' => 'display_privacy_policy' {
]); $this->db->delete('settings', [
'name' => 'display_privacy_policy'
]);
}
$this->db->delete('settings', [ if ($this->db->get_where('settings', ['name' => 'privacy_policy_content'])->num_rows())
'name' => 'privacy_policy_content' {
]); $this->db->delete('settings', [
'name' => 'privacy_policy_content'
]);
}
$this->dbforge->drop_table('consents'); if ($this->db->table_exists('consents'))
{
$this->dbforge->drop_table('consents');
}
} }
} }

View file

@ -17,10 +17,13 @@ class Migration_Add_weekday_start_setting extends EA_Migration {
*/ */
public function up() public function up()
{ {
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'first_weekday'])->num_rows())
'name' => 'first_weekday', {
'value' => 'sunday' $this->db->insert('settings', [
]); 'name' => 'first_weekday',
'value' => 'sunday'
]);
}
} }
/** /**
@ -28,6 +31,9 @@ class Migration_Add_weekday_start_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
$this->db->delete('settings', ['name' => 'first_weekday']); if ($this->db->get_where('settings', ['name' => 'first_weekday'])->num_rows())
{
$this->db->delete('settings', ['name' => 'first_weekday']);
}
} }
} }

View file

@ -17,15 +17,31 @@ class Migration_Create_appointment_location_column extends EA_Migration {
*/ */
public function up() public function up()
{ {
$this->db->query(' if ( ! $this->db->field_exists('location', 'appointments'))
ALTER TABLE `' . $this->db->dbprefix('appointments') . '` {
ADD COLUMN `location` TEXT AFTER `end_datetime`; $fields = [
'); 'location' => [
'type' => 'TEXT',
'null' => TRUE,
'after' => 'end_datetime'
]
];
$this->db->query(' $this->dbforge->add_column('appointments', $fields);
ALTER TABLE `' . $this->db->dbprefix('services') . '` }
ADD COLUMN `location` TEXT AFTER `description`;
'); if ( ! $this->db->field_exists('location', 'services'))
{
$fields = [
'location' => [
'type' => 'TEXT',
'null' => TRUE,
'after' => 'description'
]
];
$this->dbforge->add_column('services', $fields);
}
} }
/** /**
@ -33,14 +49,14 @@ class Migration_Create_appointment_location_column extends EA_Migration {
*/ */
public function down() public function down()
{ {
$this->db->query(' if ($this->db->field_exists('location', 'appointments'))
ALTER TABLE `' . $this->db->dbprefix('appointments') . '` {
DROP COLUMN `location`; $this->dbforge->drop_column('appointments', 'location');
'); }
$this->db->query(' if ($this->db->field_exists('location', 'services'))
ALTER TABLE `' . $this->db->dbprefix('services') . '` {
DROP COLUMN `location`; $this->dbforge->drop_column('services', 'location');
'); }
} }
} }

View file

@ -36,7 +36,7 @@ class Migration_Add_working_plan_exceptions_to_user_settings extends EA_Migratio
*/ */
public function down() public function down()
{ {
if ( ! $this->db->field_exists('working_plan_exceptions', 'user_settings')) if ($this->db->field_exists('working_plan_exceptions', 'user_settings'))
{ {
$this->dbforge->drop_column('user_settings', 'working_plan_exceptions'); $this->dbforge->drop_column('user_settings', 'working_plan_exceptions');
} }

View file

@ -17,10 +17,13 @@ class Migration_Add_require_phone_number_setting extends EA_Migration {
*/ */
public function up() public function up()
{ {
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'require_phone_number'])->num_rows())
'name' => 'require_phone_number', {
'value' => '1' $this->db->insert('settings', [
]); 'name' => 'require_phone_number',
'value' => '1'
]);
}
} }
/** /**
@ -28,6 +31,9 @@ class Migration_Add_require_phone_number_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
$this->db->delete('settings', ['name' => 'require_phone_number']); if ($this->db->get_where('settings', ['name' => 'require_phone_number'])->num_rows())
{
$this->db->delete('settings', ['name' => 'require_phone_number']);
}
} }
} }

View file

@ -19,10 +19,14 @@ class Migration_Add_api_token_setting extends EA_Migration {
*/ */
public function up() public function up()
{ {
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'api_token'])->num_rows())
'name' => 'api_token', {
'value' => '' $this->db->insert('settings', [
]); 'name' => 'api_token',
'value' => ''
]);
}
} }
/** /**
@ -32,6 +36,9 @@ class Migration_Add_api_token_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
$this->db->delete('settings', ['name' => 'api_token']); if ($this->db->get_where('settings', ['name' => 'api_token'])->num_rows())
{
$this->db->delete('settings', ['name' => 'api_token']);
}
} }
} }

View file

@ -17,10 +17,13 @@ class Migration_Add_display_any_provider_setting extends EA_Migration {
*/ */
public function up() public function up()
{ {
$this->db->insert('settings', [ if ( ! $this->db->get_where('settings', ['name' => 'display_any_provider'])->num_rows())
'name' => 'display_any_provider', {
'value' => '1' $this->db->insert('settings', [
]); 'name' => 'display_any_provider',
'value' => '1'
]);
}
} }
/** /**
@ -28,8 +31,9 @@ class Migration_Add_display_any_provider_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
$this->db->delete('settings', [ if ($this->db->get_where('settings', ['name' => 'display_any_provider'])->num_rows())
'name' => 'display_any_provider' {
]); $this->db->delete('settings', ['name' => 'display_any_provider']);
}
} }
} }

View file

@ -63,13 +63,11 @@ class Migration_Add_booking_field_settings extends EA_Migration {
if ($this->db->get_where('settings', ['name' => $setting_name])->num_rows()) if ($this->db->get_where('settings', ['name' => $setting_name])->num_rows())
{ {
$setting = $this->db->get_where('settings', [ $setting = $this->db->get_where('settings', ['name' => $setting_name])->row_array();
'name' => $setting_name,
])->row_array();
$value = $setting['value']; // Use existing value. $value = $setting['value']; // Use existing value.
$this->db->delete('settings', ['name' => $setting_name]); $this->db->delete('settings', ['name' => $setting_name]);
} }
if ( ! $this->db->get_where('settings', ['name' => $setting_name])->num_rows()) if ( ! $this->db->get_where('settings', ['name' => $setting_name])->num_rows())
@ -96,9 +94,7 @@ class Migration_Add_booking_field_settings extends EA_Migration {
if ($this->db->get_where('settings', ['name' => $setting_name])->num_rows()) if ($this->db->get_where('settings', ['name' => $setting_name])->num_rows())
{ {
$this->db->delete('settings', [ $this->db->delete('settings', ['name' => $setting_name]);
'name' => $setting_name,
]);
} }
} }
} }

View file

@ -31,10 +31,12 @@ class Migration_Rename_id_service_categories_column_of_services_table extends EA
$this->dbforge->modify_column('services', $fields); $this->dbforge->modify_column('services', $fields);
$this->db->query('ALTER TABLE `' . $this->db->dbprefix('services') . '` $this->db->query('
ADD CONSTRAINT `services_categories` FOREIGN KEY (`id_categories`) REFERENCES `' . $this->db->dbprefix('categories') . '` (`id`) ALTER TABLE `' . $this->db->dbprefix('services') . '`
ON DELETE SET NULL ADD CONSTRAINT `services_categories` FOREIGN KEY (`id_categories`) REFERENCES `' . $this->db->dbprefix('categories') . '` (`id`)
ON UPDATE CASCADE'); ON DELETE SET NULL
ON UPDATE CASCADE
');
} }
} }
@ -57,10 +59,12 @@ class Migration_Rename_id_service_categories_column_of_services_table extends EA
$this->dbforge->modify_column('services', $fields); $this->dbforge->modify_column('services', $fields);
$this->db->query('ALTER TABLE `' . $this->db->dbprefix('services') . '` $this->db->query('
ADD CONSTRAINT `services_service_categories` FOREIGN KEY (`id_service_categories`) REFERENCES `' . $this->db->dbprefix('categories') . '` (`id`) ALTER TABLE `' . $this->db->dbprefix('services') . '`
ON DELETE SET NULL ADD CONSTRAINT `services_service_categories` FOREIGN KEY (`id_service_categories`) REFERENCES `' . $this->db->dbprefix('categories') . '` (`id`)
ON UPDATE CASCADE'); ON DELETE SET NULL
ON UPDATE CASCADE
');
} }
} }
} }

View file

@ -11,7 +11,7 @@
* @since v1.4.0 * @since v1.4.0
* ---------------------------------------------------------------------------- */ * ---------------------------------------------------------------------------- */
class Migration_Add_color_column_to_services_table extends CI_Migration { class Migration_Add_color_column_to_services_table extends EA_Migration {
/** /**
* Upgrade method. * Upgrade method.
*/ */

View file

@ -11,7 +11,7 @@
* @since v1.4.0 * @since v1.4.0
* ---------------------------------------------------------------------------- */ * ---------------------------------------------------------------------------- */
class Migration_Add_color_column_to_appointments_table extends CI_Migration { class Migration_Add_color_column_to_appointments_table extends EA_Migration {
/** /**
* Upgrade method. * Upgrade method.
*/ */

View file

@ -31,11 +31,9 @@ class Migration_Add_matomo_analytics_url_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
if ( ! $this->db->get_where('settings', ['name' => 'matomo_analytics_url'])->num_rows()) if ($this->db->get_where('settings', ['name' => 'matomo_analytics_url'])->num_rows())
{ {
$this->db->delete('settings', [ $this->db->delete('settings', ['name' => 'matomo_analytics_url']);
'name' => 'matomo_analytics_url',
]);
} }
} }
} }

View file

@ -31,11 +31,9 @@ class Migration_Add_display_delete_personal_information_setting extends EA_Migra
*/ */
public function down() public function down()
{ {
if ( ! $this->db->get_where('settings', ['name' => 'display_delete_personal_information'])->num_rows()) if ($this->db->get_where('settings', ['name' => 'display_delete_personal_information'])->num_rows())
{ {
$this->db->delete('settings', [ $this->db->delete('settings', ['name' => 'display_delete_personal_information']);
'name' => 'display_delete_personal_information',
]);
} }
} }
} }

View file

@ -31,11 +31,9 @@ class Migration_Add_disable_booking_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
if ( ! $this->db->get_where('settings', ['name' => 'disable_booking'])->num_rows()) if ($this->db->get_where('settings', ['name' => 'disable_booking'])->num_rows())
{ {
$this->db->delete('settings', [ $this->db->delete('settings', ['name' => 'disable_booking']);
'name' => 'disable_booking',
]);
} }
} }
} }

View file

@ -31,11 +31,9 @@ class Migration_Add_disable_booking_message_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
if ( ! $this->db->get_where('settings', ['name' => 'disable_booking_message'])->num_rows()) if ($this->db->get_where('settings', ['name' => 'disable_booking_message'])->num_rows())
{ {
$this->db->delete('settings', [ $this->db->delete('settings', ['name' => 'disable_booking_message']);
'name' => 'disable_booking_message',
]);
} }
} }
} }

View file

@ -31,11 +31,9 @@ class Migration_Add_company_logo_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
if ( ! $this->db->get_where('settings', ['name' => 'company_logo'])->num_rows()) if ($this->db->get_where('settings', ['name' => 'company_logo'])->num_rows())
{ {
$this->db->delete('settings', [ $this->db->delete('settings', ['name' => 'company_logo']);
'name' => 'company_logo',
]);
} }
} }
} }

View file

@ -31,11 +31,9 @@ class Migration_Add_company_color_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
if ( ! $this->db->get_where('settings', ['name' => 'company_color'])->num_rows()) if ($this->db->get_where('settings', ['name' => 'company_color'])->num_rows())
{ {
$this->db->delete('settings', [ $this->db->delete('settings', ['name' => 'company_color']);
'name' => 'company_color',
]);
} }
} }
} }

View file

@ -31,11 +31,9 @@ class Migration_Add_display_login_button_setting extends EA_Migration {
*/ */
public function down() public function down()
{ {
if ( ! $this->db->get_where('settings', ['name' => 'display_login_button'])->num_rows()) if ($this->db->get_where('settings', ['name' => 'display_login_button'])->num_rows())
{ {
$this->db->delete('settings', [ $this->db->delete('settings', ['name' => 'display_login_button']);
'name' => 'display_login_button',
]);
} }
} }
} }

View file

@ -11,7 +11,7 @@
* @since v1.4.0 * @since v1.4.0
* ---------------------------------------------------------------------------- */ * ---------------------------------------------------------------------------- */
class Migration_Add_is_private_column_to_services_table extends CI_Migration { class Migration_Add_is_private_column_to_services_table extends EA_Migration {
/** /**
* Upgrade method. * Upgrade method.
*/ */
@ -37,7 +37,7 @@ class Migration_Add_is_private_column_to_services_table extends CI_Migration {
*/ */
public function down() public function down()
{ {
if ( ! $this->db->field_exists('is_private', 'services')) if ($this->db->field_exists('is_private', 'services'))
{ {
$this->dbforge->drop_column('services', 'is_private'); $this->dbforge->drop_column('services', 'is_private');
} }

View file

@ -11,7 +11,7 @@
* @since v1.4.0 * @since v1.4.0
* ---------------------------------------------------------------------------- */ * ---------------------------------------------------------------------------- */
class Migration_Add_is_private_column_to_users_table extends CI_Migration { class Migration_Add_is_private_column_to_users_table extends EA_Migration {
/** /**
* Upgrade method. * Upgrade method.
*/ */
@ -37,7 +37,7 @@ class Migration_Add_is_private_column_to_users_table extends CI_Migration {
*/ */
public function down() public function down()
{ {
if ( ! $this->db->field_exists('is_private', 'users')) if ($this->db->field_exists('is_private', 'users'))
{ {
$this->dbforge->drop_column('users', 'is_private'); $this->dbforge->drop_column('users', 'is_private');
} }