116 lines
4.7 KiB
PHP
116 lines
4.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file classes/migration/install/MetadataMigration.php
|
|
*
|
|
* Copyright (c) 2014-2021 Simon Fraser University
|
|
* Copyright (c) 2000-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class MetadataMigration
|
|
*
|
|
* @brief Describe database table structures.
|
|
*/
|
|
|
|
namespace PKP\migration\install;
|
|
|
|
use Illuminate\Database\Schema\Blueprint;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
class MetadataMigration extends \PKP\migration\Migration
|
|
{
|
|
/**
|
|
* Run the migrations.
|
|
*/
|
|
public function up(): void
|
|
{
|
|
// Citations
|
|
Schema::create('citations', function (Blueprint $table) {
|
|
$table->comment('A citation made by an associated publication.');
|
|
$table->bigInteger('citation_id')->autoIncrement();
|
|
|
|
$table->bigInteger('publication_id');
|
|
$table->foreign('publication_id', 'citations_publication')->references('publication_id')->on('publications')->onDelete('cascade');
|
|
$table->index(['publication_id'], 'citations_publication');
|
|
|
|
$table->text('raw_citation');
|
|
$table->bigInteger('seq')->default(0);
|
|
|
|
$table->unique(['publication_id', 'seq'], 'citations_publication_seq');
|
|
});
|
|
|
|
// Citation settings
|
|
Schema::create('citation_settings', function (Blueprint $table) {
|
|
$table->comment('Additional data about citations, including localized content.');
|
|
$table->bigIncrements('citation_setting_id');
|
|
$table->bigInteger('citation_id');
|
|
$table->foreign('citation_id', 'citation_settings_citation_id')->references('citation_id')->on('citations')->onDelete('cascade');
|
|
$table->index(['citation_id'], 'citation_settings_citation_id');
|
|
|
|
$table->string('locale', 14)->default('');
|
|
$table->string('setting_name', 255);
|
|
$table->mediumText('setting_value')->nullable();
|
|
$table->string('setting_type', 6);
|
|
|
|
$table->unique(['citation_id', 'locale', 'setting_name'], 'citation_settings_unique');
|
|
});
|
|
|
|
// Filter groups
|
|
Schema::create('filter_groups', function (Blueprint $table) {
|
|
$table->comment('Filter groups are used to organized filters into named sets, which can be retrieved by the application for invocation.');
|
|
$table->bigInteger('filter_group_id')->autoIncrement();
|
|
$table->string('symbolic', 255)->nullable();
|
|
$table->string('display_name', 255)->nullable();
|
|
$table->string('description', 255)->nullable();
|
|
$table->string('input_type', 255)->nullable();
|
|
$table->string('output_type', 255)->nullable();
|
|
$table->unique(['symbolic'], 'filter_groups_symbolic');
|
|
});
|
|
|
|
// Configured filter instances (transformations)
|
|
Schema::create('filters', function (Blueprint $table) {
|
|
$table->comment('Filters represent a transformation of a supported piece of data from one form to another, such as a PHP object into an XML document.');
|
|
$table->bigInteger('filter_id')->autoIncrement();
|
|
|
|
$table->bigInteger('filter_group_id')->default(0);
|
|
$table->foreign('filter_group_id')->references('filter_group_id')->on('filter_groups')->onDelete('cascade');
|
|
$table->index(['filter_group_id'], 'filters_filter_group_id');
|
|
|
|
$table->bigInteger('context_id')->default(0);
|
|
$table->string('display_name', 255)->nullable();
|
|
$table->string('class_name', 255)->nullable();
|
|
$table->smallInteger('is_template')->default(0);
|
|
$table->bigInteger('parent_filter_id')->default(0);
|
|
$table->bigInteger('seq')->default(0);
|
|
});
|
|
|
|
// Filter Settings
|
|
Schema::create('filter_settings', function (Blueprint $table) {
|
|
$table->comment('More data about filters, including localized content.');
|
|
$table->bigIncrements('filter_setting_id');
|
|
$table->bigInteger('filter_id');
|
|
$table->foreign('filter_id')->references('filter_id')->on('filters')->onDelete('cascade');
|
|
$table->index(['filter_id'], 'filter_settings_id');
|
|
|
|
$table->string('locale', 14)->default('');
|
|
$table->string('setting_name', 255);
|
|
$table->mediumText('setting_value')->nullable();
|
|
$table->string('setting_type', 6);
|
|
|
|
$table->unique(['filter_id', 'locale', 'setting_name'], 'filter_settings_unique');
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Reverse the migration.
|
|
*/
|
|
public function down(): void
|
|
{
|
|
Schema::drop('filter_settings');
|
|
Schema::drop('filters');
|
|
Schema::drop('filter_groups');
|
|
Schema::drop('citation_settings');
|
|
Schema::drop('citations');
|
|
}
|
|
}
|