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();
34 $table->bigInteger(
'stage_id')->
default(1);
36 $table->tinyInteger(
'status')->
default(1);
37 $table->tinyInteger(
'submission_progress')->
default(1);
39 $table->tinyInteger(
'work_type')->
default(0)->nullable();
40 $table->index([
'context_id'],
'submissions_context_id');
44 Capsule::schema()->create(
'submission_settings',
function (Blueprint $table) {
45 $table->bigInteger(
'submission_id');
46 $table->string(
'locale', 14)->
default(
'');
47 $table->string(
'setting_name', 255);
48 $table->mediumText(
'setting_value')->nullable();
49 $table->index([
'submission_id'],
'submission_settings_submission_id');
50 $table->unique([
'submission_id',
'locale',
'setting_name'],
'submission_settings_pkey');
54 Capsule::schema()->create(
'publication_settings',
function (Blueprint $table) {
55 $table->bigInteger(
'publication_id');
56 $table->string(
'locale', 14)->
default(
'');
57 $table->string(
'setting_name', 255);
58 $table->text(
'setting_value')->nullable();
59 $table->index([
'publication_id'],
'publication_settings_publication_id');
60 $table->unique([
'publication_id',
'locale',
'setting_name'],
'publication_settings_pkey');
63 switch (Capsule::connection()->getDriverName()) {
64 case 'mysql': Capsule::connection()->unprepared(
'CREATE INDEX publication_settings_name_value ON publication_settings (setting_name(50), setting_value(150))');
break;
65 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;
69 Capsule::schema()->create(
'authors',
function (Blueprint $table) {
70 $table->bigInteger(
'author_id')->autoIncrement();
71 $table->string(
'email', 90);
72 $table->tinyInteger(
'include_in_browse')->
default(1);
73 $table->bigInteger(
'publication_id');
74 $table->float(
'seq', 8, 2)->
default(0);
75 $table->bigInteger(
'user_group_id')->nullable();
76 $table->index([
'publication_id'],
'authors_publication_id');
80 Capsule::schema()->create(
'author_settings',
function (Blueprint $table) {
81 $table->bigInteger(
'author_id');
82 $table->string(
'locale', 14)->
default(
'');
83 $table->string(
'setting_name', 255);
84 $table->text(
'setting_value')->nullable();
85 $table->index([
'author_id'],
'author_settings_author_id');
86 $table->unique([
'author_id',
'locale',
'setting_name'],
'author_settings_pkey');
90 Capsule::schema()->create(
'edit_decisions',
function (Blueprint $table) {
91 $table->bigInteger(
'edit_decision_id')->autoIncrement();
92 $table->bigInteger(
'submission_id');
93 $table->bigInteger(
'review_round_id');
94 $table->bigInteger(
'stage_id')->nullable();
95 $table->tinyInteger(
'round');
96 $table->bigInteger(
'editor_id');
97 $table->tinyInteger(
'decision');
98 $table->datetime(
'date_decided');
99 $table->index([
'submission_id'],
'edit_decisions_submission_id');
100 $table->index([
'editor_id'],
'edit_decisions_editor_id');
104 Capsule::schema()->create(
'submission_comments',
function (Blueprint $table) {
105 $table->bigInteger(
'comment_id')->autoIncrement();
106 $table->bigInteger(
'comment_type')->nullable();
107 $table->bigInteger(
'role_id');
108 $table->bigInteger(
'submission_id');
109 $table->bigInteger(
'assoc_id');
110 $table->bigInteger(
'author_id');
111 $table->text(
'comment_title');
112 $table->text(
'comments')->nullable();
113 $table->datetime(
'date_posted')->nullable();
114 $table->datetime(
'date_modified')->nullable();
115 $table->tinyInteger(
'viewable')->nullable();
116 $table->index([
'submission_id'],
'submission_comments_submission_id');
120 Capsule::schema()->create(
'subeditor_submission_group',
function (Blueprint $table) {
121 $table->bigInteger(
'context_id');
122 $table->bigInteger(
'assoc_id');
123 $table->bigInteger(
'assoc_type');
124 $table->bigInteger(
'user_id');
125 $table->index([
'context_id'],
'section_editors_context_id');
126 $table->index([
'assoc_id',
'assoc_type'],
'subeditor_submission_group_assoc_id');
127 $table->index([
'user_id'],
'subeditor_submission_group_user_id');
128 $table->unique([
'context_id',
'assoc_id',
'assoc_type',
'user_id'],
'section_editors_pkey');
132 Capsule::schema()->create(
'queries',
function (Blueprint $table) {
133 $table->bigInteger(
'query_id')->autoIncrement();
134 $table->bigInteger(
'assoc_type');
135 $table->bigInteger(
'assoc_id');
136 $table->tinyInteger(
'stage_id')->
default(1);
137 $table->float(
'seq', 8, 2)->
default(0);
138 $table->datetime(
'date_posted')->nullable();
139 $table->datetime(
'date_modified')->nullable();
140 $table->smallInteger(
'closed')->
default(0);
141 $table->index([
'assoc_type',
'assoc_id'],
'queries_assoc_id');
145 Capsule::schema()->create(
'query_participants',
function (Blueprint $table) {
146 $table->bigInteger(
'query_id');
147 $table->bigInteger(
'user_id');
148 $table->unique([
'query_id',
'user_id'],
'query_participants_pkey');
152 Capsule::schema()->create(
'submission_search_keyword_list',
function (Blueprint $table) {
153 $table->bigInteger(
'keyword_id')->autoIncrement();
154 $table->string(
'keyword_text', 60);
155 $table->unique([
'keyword_text'],
'submission_search_keyword_text');
159 Capsule::schema()->create(
'submission_search_objects',
function (Blueprint $table) {
160 $table->bigInteger(
'object_id')->autoIncrement();
161 $table->bigInteger(
'submission_id');
162 $table->integer(
'type')->comment(
'Type of item. E.g., abstract, fulltext, etc.');
163 $table->bigInteger(
'assoc_id')->comment(
'Optional ID of an associated record (e.g., a file_id)')->nullable();
167 Capsule::schema()->create(
'submission_search_object_keywords',
function (Blueprint $table) {
168 $table->bigInteger(
'object_id');
169 $table->bigInteger(
'keyword_id');
170 $table->integer(
'pos')->comment(
'Word position of the keyword in the object.');
171 $table->index([
'keyword_id'],
'submission_search_object_keywords_keyword_id');
172 $table->unique([
'object_id',
'pos'],
'submission_search_object_keywords_pkey');
181 Capsule::schema()->drop(
'submission_search_object_keywords');
182 Capsule::schema()->drop(
'submission_search_objects');
183 Capsule::schema()->drop(
'submission_search_keyword_list');
184 Capsule::schema()->drop(
'query_participants');
185 Capsule::schema()->drop(
'queries');
186 Capsule::schema()->drop(
'subeditor_submission_group');
187 Capsule::schema()->drop(
'submission_comments');
188 Capsule::schema()->drop(
'edit_decisions');
189 Capsule::schema()->drop(
'author_settings');
190 Capsule::schema()->drop(
'authors');
191 Capsule::schema()->drop(
'publication_settings');
192 Capsule::schema()->drop(
'submission_settings');
193 Capsule::schema()->drop(
'submissions');