Skip to content

Commit

Permalink
pkp/pkp-lib#9892 fixed column types and added float to decimal change…
Browse files Browse the repository at this point in the history
… migration
  • Loading branch information
touhidurabir committed Aug 5, 2024
1 parent d9b7acc commit 35c840c
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 73 deletions.
2 changes: 1 addition & 1 deletion classes/migration/install/JournalsMigration.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public function up(): void
$table->comment('A list of all journals in the installation of OJS.');
$table->bigInteger('journal_id')->autoIncrement();
$table->string('path', 32);
$table->float('seq', 53)->default(0)->comment('Used to order lists of journals');
$table->float('seq')->default(0)->comment('Used to order lists of journals');
$table->string('primary_locale', 28);
$table->smallInteger('enabled')->default(1)->comment('Controls whether or not the journal is considered "live" and will appear on the website. (Note that disabled journals may still be accessible, but only if the user knows the URL.)');
$table->unique(['path'], 'journals_path');
Expand Down
30 changes: 12 additions & 18 deletions classes/migration/install/MetricsMigration.php
Original file line number Diff line number Diff line change
Expand Up @@ -219,17 +219,14 @@ public function up(): void
$table->integer('metric_unique');

$table->index(['context_id', 'submission_id'], 'msgd_context_id_submission_id');
switch (DB::getDriverName()) {
case 'mysql':
case 'mariadb':
match (DB::getDriverName()) {
'mysql', 'mariadb' =>
// See "Create a database table" here: https://db-ip.com/db/format/ip-to-city-lite/csv.html
// where city is defined as varchar(80)
$table->unique([DB::raw('load_id, context_id, submission_id, country, region, city(80), date')], 'msgd_uc_load_context_submission_c_r_c_date');
break;
case 'pgsql':
$table->unique(['load_id', 'context_id', 'submission_id', 'country', 'region', 'city', 'date'], 'msgd_uc_load_context_submission_c_r_c_date');
break;
}
$table->unique([DB::raw('load_id, context_id, submission_id, country, region, city(80), date')], 'msgd_uc_load_context_submission_c_r_c_date'),
'pgsql' =>
$table->unique(['load_id', 'context_id', 'submission_id', 'country', 'region', 'city', 'date'], 'msgd_uc_load_context_submission_c_r_c_date')
};
});

Schema::create('metrics_submission_geo_monthly', function (Blueprint $table) {
Expand All @@ -252,17 +249,14 @@ public function up(): void
$table->integer('metric_unique');

$table->index(['context_id', 'submission_id'], 'msgm_context_id_submission_id');
switch (DB::getDriverName()) {
case 'mysql':
case 'mariadb':
match (DB::getDriverName()) {
'mysql', 'mariadb' =>
// See "Create a database table" here: https://db-ip.com/db/format/ip-to-city-lite/csv.html
// where city is defined as varchar(80)
$table->unique([DB::raw('context_id, submission_id, country, region, city(80), month')], 'msgm_uc_context_submission_c_r_c_month');
break;
case 'pgsql':
$table->unique(['context_id', 'submission_id', 'country', 'region', 'city', 'month'], 'msgm_uc_context_submission_c_r_c_month');
break;
}
$table->unique([DB::raw('context_id, submission_id, country, region, city(80), month')], 'msgm_uc_context_submission_c_r_c_month'),
'pgsql' =>
$table->unique(['context_id', 'submission_id', 'country', 'region', 'city', 'month'], 'msgm_uc_context_submission_c_r_c_month')
};
});

// Usage stats total item temporary records
Expand Down
48 changes: 21 additions & 27 deletions classes/migration/install/OJSMigration.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public function up(): void
$table->foreign('review_form_id', 'sections_review_form_id')->references('review_form_id')->on('review_forms')->onDelete('set null');
$table->index(['review_form_id'], 'sections_review_form_id');

$table->float('seq', 53)->default(0);
$table->float('seq')->default(0);
$table->smallInteger('editor_restricted')->default(0);
$table->smallInteger('meta_indexed')->default(0);
$table->smallInteger('meta_reviewed')->default(1);
Expand Down Expand Up @@ -114,15 +114,12 @@ public function up(): void
$table->unique(['issue_id', 'locale', 'setting_name'], 'issue_settings_unique');
});
// Add partial index (DBMS-specific)
switch (DB::getDriverName()) {
case 'mysql':
case 'mariadb':
DB::unprepared('CREATE INDEX issue_settings_name_value ON issue_settings (setting_name(50), setting_value(150))');
break;
case 'pgsql':
DB::unprepared("CREATE INDEX issue_settings_name_value ON issue_settings (setting_name, setting_value) WHERE setting_name IN ('medra::registeredDoi', 'datacite::registeredDoi')");
break;
}
match (DB::getDriverName()) {
'mysql', 'mariadb' =>
DB::unprepared('CREATE INDEX issue_settings_name_value ON issue_settings (setting_name(50), setting_value(150))'),
'pgsql' =>
DB::unprepared("CREATE INDEX issue_settings_name_value ON issue_settings (setting_name, setting_value) WHERE setting_name IN ('medra::registeredDoi', 'datacite::registeredDoi')")
};

Schema::create('issue_files', function (Blueprint $table) {
$table->comment('Relationships between issues and issue files, such as cover images.');
Expand Down Expand Up @@ -157,7 +154,7 @@ public function up(): void
$table->index(['file_id'], 'issue_galleys_file_id');

$table->string('label', 255)->nullable();
$table->float('seq', 53)->default(0);
$table->float('seq')->default(0);
$table->string('url_path', 64)->nullable();

$table->index(['url_path'], 'issue_galleys_url_path');
Expand Down Expand Up @@ -192,7 +189,7 @@ public function up(): void
$table->foreign('journal_id', 'custom_issue_orders_journal_id')->references('journal_id')->on('journals')->onDelete('cascade');
$table->index(['journal_id'], 'custom_issue_orders_journal_id');

$table->float('seq', 53)->default(0);
$table->float('seq')->default(0);

$table->unique(['issue_id'], 'custom_issue_orders_unique');
});
Expand All @@ -209,7 +206,7 @@ public function up(): void
$table->foreign('section_id', 'custom_section_orders_section_id')->references('section_id')->on('sections')->onDelete('cascade');
$table->index(['section_id'], 'custom_section_orders_section_id');

$table->float('seq', 53)->default(0);
$table->float('seq')->default(0);

$table->unique(['issue_id', 'section_id'], 'custom_section_orders_unique');
});
Expand All @@ -231,7 +228,7 @@ public function up(): void
$table->foreign('section_id', 'publications_section_id')->references('section_id')->on('sections')->onDelete('set null');
$table->index(['section_id'], 'publications_section_id');

$table->float('seq', 53)->default(0);
$table->float('seq')->default(0);

$table->bigInteger('submission_id');
$table->foreign('submission_id', 'publications_submission_id')->references('submission_id')->on('submissions')->onDelete('cascade');
Expand Down Expand Up @@ -277,7 +274,7 @@ public function up(): void
$table->foreign('submission_file_id')->references('submission_file_id')->on('submission_files');
$table->index(['submission_file_id'], 'publication_galleys_submission_file_id');

$table->float('seq', 53)->default(0);
$table->float('seq')->default(0);
$table->string('remote_url', 2047)->nullable();
$table->smallInteger('is_approved')->default(0);
$table->string('url_path', 64)->nullable();
Expand Down Expand Up @@ -305,15 +302,12 @@ public function up(): void
$table->unique(['galley_id', 'locale', 'setting_name'], 'publication_galley_settings_unique');
});
// Add partial index (DBMS-specific)
switch (DB::getDriverName()) {
case 'mysql':
case 'mariadb':
DB::unprepared('CREATE INDEX publication_galley_settings_name_value ON publication_galley_settings (setting_name(50), setting_value(150))');
break;
case 'pgsql':
DB::unprepared('CREATE INDEX publication_galley_settings_name_value ON publication_galley_settings (setting_name, setting_value)');
break;
}
match (DB::getDriverName()) {
'mysql', 'mariadb' =>
DB::unprepared('CREATE INDEX publication_galley_settings_name_value ON publication_galley_settings (setting_name(50), setting_value(150))'),
'pgsql' =>
DB::unprepared('CREATE INDEX publication_galley_settings_name_value ON publication_galley_settings (setting_name, setting_value)')
};

// Subscription types.
Schema::create('subscription_types', function (Blueprint $table) {
Expand All @@ -324,14 +318,14 @@ public function up(): void
$table->foreign('journal_id', 'subscription_types_journal_id')->references('journal_id')->on('journals')->onDelete('cascade');
$table->index(['journal_id'], 'subscription_types_journal_id');

$table->float('cost', 53);
$table->decimal('cost', 8, 2)->unsigned();
$table->string('currency_code_alpha', 3);
$table->smallInteger('duration')->nullable();
$table->smallInteger('format');
$table->smallInteger('institutional')->default(0);
$table->smallInteger('membership')->default(0);
$table->smallInteger('disable_public_display');
$table->float('seq', 53);
$table->float('seq');
});

// Locale-specific subscription type data
Expand Down Expand Up @@ -421,7 +415,7 @@ public function up(): void
$table->index(['user_id'], 'completed_payments_user_id');

$table->bigInteger('assoc_id')->nullable();
$table->float('amount', 53);
$table->decimal('amount', 8, 2)->unsigned();
$table->string('currency_code_alpha', 3)->nullable();
$table->string('payment_method_plugin_name', 80)->nullable();
});
Expand Down
15 changes: 6 additions & 9 deletions classes/migration/upgrade/v3_4_0/I7901_Duplicate_OAI_IDs.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,8 @@ class I7901_Duplicate_OAI_IDs extends \PKP\migration\Migration
*/
public function up(): void
{
switch (DB::getDriverName()) {
case 'mysql':
case 'mariadb':
match (DB::getDriverName()) {
'mysql', 'mariadb' =>
DB::unprepared(
"DELETE dot
FROM data_object_tombstones dot
Expand All @@ -33,9 +32,8 @@ public function up(): void
JOIN publication_settings psissue ON (psissue.publication_id = p.publication_id AND psissue.setting_name='issueId' AND psissue.locale='')
JOIN issues i ON (CAST(i.issue_id AS CHAR(20)) = psissue.setting_value)
WHERE i.published = 1 AND j.enabled = 1 AND p.status = 3"
);
break;
case 'pgsql':
),
'pgsql' =>
DB::unprepared(
"DELETE FROM data_object_tombstones dot
USING submissions s, journals j, publications p, publication_settings psissue, issues i
Expand All @@ -45,9 +43,8 @@ public function up(): void
AND psissue.publication_id = p.publication_id
AND psissue.setting_name='issueId' AND psissue.locale='' AND (CAST(i.issue_id AS CHAR(20)) = psissue.setting_value)
AND i.published = 1 AND j.enabled = 1 AND p.status = 3"
);
break;
}
)
};
}

/**
Expand Down
30 changes: 12 additions & 18 deletions classes/migration/upgrade/v3_4_0/I9231_FixMetricsIndexes.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,27 +52,21 @@ public function up(): void
// and create new ones using city column prefix for MySQL
Schema::table('metrics_submission_geo_daily', function (Blueprint $table) {
$table->dropUnique('msgd_uc_load_context_submission_c_r_c_date');
switch (DB::getDriverName()) {
case 'mysql':
case 'mariadb':
$table->unique([DB::raw('load_id, context_id, submission_id, country, region, city(80), date')], 'msgd_uc_load_context_submission_c_r_c_date');
break;
case 'pgsql':
$table->unique(['load_id', 'context_id', 'submission_id', 'country', 'region', 'city', 'date'], 'msgd_uc_load_context_submission_c_r_c_date');
break;
}
match (DB::getDriverName()) {
'mysql', 'mariadb' =>
$table->unique([DB::raw('load_id, context_id, submission_id, country, region, city(80), date')], 'msgd_uc_load_context_submission_c_r_c_date'),
'pgsql' =>
$table->unique(['load_id', 'context_id', 'submission_id', 'country', 'region', 'city', 'date'], 'msgd_uc_load_context_submission_c_r_c_date'),
};
});
Schema::table('metrics_submission_geo_monthly', function (Blueprint $table) {
$table->dropUnique('msgm_uc_context_submission_c_r_c_month');
switch (DB::getDriverName()) {
case 'mysql':
case 'mariadb':
$table->unique([DB::raw('context_id, submission_id, country, region, city(80), month')], 'msgm_uc_context_submission_c_r_c_month');
break;
case 'pgsql':
$table->unique(['context_id', 'submission_id', 'country', 'region', 'city', 'month'], 'msgm_uc_context_submission_c_r_c_month');
break;
}
match (DB::getDriverName()) {
'mysql', 'mariadb' =>
$table->unique([DB::raw('context_id, submission_id, country, region, city(80), month')], 'msgm_uc_context_submission_c_r_c_month'),
'pgsql' =>
$table->unique(['context_id', 'submission_id', 'country', 'region', 'city', 'month'], 'msgm_uc_context_submission_c_r_c_month'),
};
});
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

/**
* @file classes/migration/upgrade/v3_5_0/I9892_FloatToDecimalColumnTypeUpdate.php
*
* Copyright (c) 2024 Simon Fraser University
* Copyright (c) 2024 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class I9892_FloatToDecimalColumnTypeUpdate
*
* @brief Changes columns types from to float to decimal
*
* @see https://laravel.com/docs/11.x/upgrade#floating-point-types
*/

namespace APP\migration\upgrade\v3_5_0;

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class I9892_FloatToDecimalColumnTypeUpdate extends \PKP\migration\Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('subscription_types', function (Blueprint $table) {
$table->decimal('cost', 8, 2)->unsigned()->change();
});

Schema::table('completed_payments', function (Blueprint $table) {
$table->decimal('amount', 8, 2)->unsigned()->change();
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('subscription_types', function (Blueprint $table) {
$table->double('cost')->change();
});

Schema::table('completed_payments', function (Blueprint $table) {
$table->double('amount')->change();
});
}
}
1 change: 1 addition & 0 deletions dbscripts/xml/upgrade.xml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@
<upgrade minversion="3.1.0.0" maxversion="3.4.9.9">
<migration class="PKP\migration\upgrade\v3_5_0\PreflightCheckMigration" fallback="3.4.9.9" />
<migration class="APP\migration\upgrade\v3_5_0\I8333_AddMissingForeignKeys" />
<migration class="APP\migration\upgrade\v3_5_0\I9892_FloatToDecimalColumnTypeUpdate" />
<migration class="PKP\migration\upgrade\v3_5_0\I9895_AddAppKeyToConfigFile"/>
<migration class="PKP\migration\upgrade\v3_5_0\I9678_RemoveScheduledTasksTable"/>
<migration class="PKP\migration\upgrade\v3_5_0\InstallEmailTemplates"/>
Expand Down

0 comments on commit 35c840c

Please sign in to comment.