14 use Illuminate\Database\Migrations\Migration;
15 use Illuminate\Database\Schema\Builder;
16 use Illuminate\Database\Schema\Blueprint;
17 use Illuminate\Database\Capsule\Manager as Capsule;
24 public function up() {
26 Capsule::schema()->create(
'submissions',
function (Blueprint $table) {
27 $table->bigInteger(
'submission_id')->autoIncrement();
28 $table->bigInteger(
'context_id');
29 $table->bigInteger(
'current_publication_id')->nullable();
30 $table->datetime(
'date_last_activity')->nullable();
31 $table->datetime(
'date_submitted')->nullable();
32 $table->datetime(
'last_modified')->nullable();
33 $table->bigInteger(
'stage_id')->
default(WORKFLOW_STAGE_ID_SUBMISSION);
35 import(
'lib.pkp.classes.submission.PKPSubmission');
36 $table->smallInteger(
'status')->default(STATUS_QUEUED);
38 $table->smallInteger(
'submission_progress')->default(1);
40 $table->smallInteger(
'work_type')->default(0)->nullable();
41 $table->index([
'context_id'],
'submissions_context_id');
45 Capsule::schema()->create(
'submission_settings',
function (Blueprint $table) {
46 $table->bigInteger(
'submission_id');
47 $table->string(
'locale', 14)->
default(
'');
48 $table->string(
'setting_name', 255);
49 $table->mediumText(
'setting_value')->nullable();
50 $table->index([
'submission_id'],
'submission_settings_submission_id');
51 $table->unique([
'submission_id',
'locale',
'setting_name'],
'submission_settings_pkey');
55 Capsule::schema()->create(
'publication_settings',
function (Blueprint $table) {
56 $table->bigInteger(
'publication_id');
57 $table->string(
'locale', 14)->
default(
'');
58 $table->string(
'setting_name', 255);
59 $table->text(
'setting_value')->nullable();
60 $table->index([
'publication_id'],
'publication_settings_publication_id');
61 $table->unique([
'publication_id',
'locale',
'setting_name'],
'publication_settings_pkey');
64 switch (Capsule::connection()->getDriverName()) {
65 case 'mysql': Capsule::connection()->unprepared(
'CREATE INDEX publication_settings_name_value ON publication_settings (setting_name(50), setting_value(150))');
break;
66 case 'pgsql': Capsule::connection()->unprepared(
"CREATE INDEX publication_settings_name_value ON publication_settings (setting_name, setting_value) WHERE setting_name IN ('indexingState', 'medra::registeredDoi', 'datacite::registeredDoi', 'pub-id::publisher-id')");
break;
70 Capsule::schema()->create(
'authors',
function (Blueprint $table) {
71 $table->bigInteger(
'author_id')->autoIncrement();
72 $table->string(
'email', 90);
73 $table->smallInteger(
'include_in_browse')->
default(1);
74 $table->bigInteger(
'publication_id');
75 $table->float(
'seq', 8, 2)->
default(0);
76 $table->bigInteger(
'user_group_id')->nullable();
77 $table->index([
'publication_id'],
'authors_publication_id');
81 Capsule::schema()->create(
'author_settings',
function (Blueprint $table) {
82 $table->bigInteger(
'author_id');
83 $table->string(
'locale', 14)->
default(
'');
84 $table->string(
'setting_name', 255);
85 $table->text(
'setting_value')->nullable();
86 $table->index([
'author_id'],
'author_settings_author_id');
87 $table->unique([
'author_id',
'locale',
'setting_name'],
'author_settings_pkey');
91 Capsule::schema()->create(
'edit_decisions',
function (Blueprint $table) {
92 $table->bigInteger(
'edit_decision_id')->autoIncrement();
93 $table->bigInteger(
'submission_id');
94 $table->bigInteger(
'review_round_id');
95 $table->bigInteger(
'stage_id')->nullable();
96 $table->smallInteger(
'round');
97 $table->bigInteger(
'editor_id');
98 $table->smallInteger(
'decision');
99 $table->datetime(
'date_decided');
100 $table->index([
'submission_id'],
'edit_decisions_submission_id');
101 $table->index([
'editor_id'],
'edit_decisions_editor_id');
105 Capsule::schema()->create(
'submission_comments',
function (Blueprint $table) {
106 $table->bigInteger(
'comment_id')->autoIncrement();
107 $table->bigInteger(
'comment_type')->nullable();
108 $table->bigInteger(
'role_id');
109 $table->bigInteger(
'submission_id');
110 $table->bigInteger(
'assoc_id');
111 $table->bigInteger(
'author_id');
112 $table->text(
'comment_title');
113 $table->text(
'comments')->nullable();
114 $table->datetime(
'date_posted')->nullable();
115 $table->datetime(
'date_modified')->nullable();
116 $table->smallInteger(
'viewable')->nullable();
117 $table->index([
'submission_id'],
'submission_comments_submission_id');
121 Capsule::schema()->create(
'subeditor_submission_group',
function (Blueprint $table) {
122 $table->bigInteger(
'context_id');
123 $table->bigInteger(
'assoc_id');
124 $table->bigInteger(
'assoc_type');
125 $table->bigInteger(
'user_id');
126 $table->index([
'context_id'],
'section_editors_context_id');
127 $table->index([
'assoc_id',
'assoc_type'],
'subeditor_submission_group_assoc_id');
128 $table->index([
'user_id'],
'subeditor_submission_group_user_id');
129 $table->unique([
'context_id',
'assoc_id',
'assoc_type',
'user_id'],
'section_editors_pkey');
133 Capsule::schema()->create(
'queries',
function (Blueprint $table) {
134 $table->bigInteger(
'query_id')->autoIncrement();
135 $table->bigInteger(
'assoc_type');
136 $table->bigInteger(
'assoc_id');
137 $table->smallInteger(
'stage_id');
138 $table->float(
'seq', 8, 2)->
default(0);
139 $table->datetime(
'date_posted')->nullable();
140 $table->datetime(
'date_modified')->nullable();
141 $table->smallInteger(
'closed')->
default(0);
142 $table->index([
'assoc_type',
'assoc_id'],
'queries_assoc_id');
146 Capsule::schema()->create(
'query_participants',
function (Blueprint $table) {
147 $table->bigInteger(
'query_id');
148 $table->bigInteger(
'user_id');
149 $table->unique([
'query_id',
'user_id'],
'query_participants_pkey');
153 Capsule::schema()->create(
'submission_search_keyword_list',
function (Blueprint $table) {
154 $table->bigInteger(
'keyword_id')->autoIncrement();
155 $table->string(
'keyword_text', 60);
156 $table->unique([
'keyword_text'],
'submission_search_keyword_text');
160 Capsule::schema()->create(
'submission_search_objects',
function (Blueprint $table) {
161 $table->bigInteger(
'object_id')->autoIncrement();
162 $table->bigInteger(
'submission_id');
163 $table->integer(
'type')->comment(
'Type of item. E.g., abstract, fulltext, etc.');
164 $table->bigInteger(
'assoc_id')->comment(
'Optional ID of an associated record (e.g., a file_id)')->nullable();
168 Capsule::schema()->create(
'submission_search_object_keywords',
function (Blueprint $table) {
169 $table->bigInteger(
'object_id');
170 $table->bigInteger(
'keyword_id');
171 $table->integer(
'pos')->comment(
'Word position of the keyword in the object.');
172 $table->index([
'keyword_id'],
'submission_search_object_keywords_keyword_id');
173 $table->unique([
'object_id',
'pos'],
'submission_search_object_keywords_pkey');
182 Capsule::schema()->drop(
'submission_search_object_keywords');
183 Capsule::schema()->drop(
'submission_search_objects');
184 Capsule::schema()->drop(
'submission_search_keyword_list');
185 Capsule::schema()->drop(
'query_participants');
186 Capsule::schema()->drop(
'queries');
187 Capsule::schema()->drop(
'subeditor_submission_group');
188 Capsule::schema()->drop(
'submission_comments');
189 Capsule::schema()->drop(
'edit_decisions');
190 Capsule::schema()->drop(
'author_settings');
191 Capsule::schema()->drop(
'authors');
192 Capsule::schema()->drop(
'publication_settings');
193 Capsule::schema()->drop(
'submission_settings');
194 Capsule::schema()->drop(
'submissions');