first commit
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
<?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');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user