2021_08_11_065248_create_documents_table.php
1 2 <?php 3 4 use App\Models\Review; 5 use Illuminate\Database\Migrations\Migration; 6 use Illuminate\Database\Schema\Blueprint; 7 use Illuminate\Support\Facades\Schema; 8 9 class CreateDocumentsTable extends Migration 10 { 11 /** 12 * Run the migrations. 13 * 14 * @return void 15 */ 16 public function up() 17 { 18 Schema::create('revisions', function (Blueprint $table) { 19 $table->id(); 20 $table->boolean('is_draft')->default(false)->index(); 21 $table->string('hash')->nullable(); 22 $table->string('path')->nullable(); 23 $table->string('name')->nullable(); //original name 24 $table->string('version')->nullable(); 25 $table->bigInteger('size')->nullable(); 26 $table->foreignId('previous_id')->nullable(); 27 $table->foreignId('document_id'); 28 $table->string('from')->nullable(); 29 $table->dateTime('approved_at')->nullable(); 30 $table->unique(['document_id', 'version']); 31 $table->foreignId('created_by'); 32 $table->foreign('created_by')->references('id')->on('users'); 33 $table->foreignid('approved_by')->nullable()->references('id')->on('users'); 34 $table->foreignid('reviewed_by')->nullable()->references('id')->on('users'); 35 $table->dateTime('reviewed_at')->nullable(); 36 $table->foreignId('template_id')->nullable()->constrained('templates')->cascadeOnUpdate()->nullOnDelete(); 37 $table->boolean('needs_review')->default(true); 38 $table->timestamps(); 39 $table->softDeletes(); 40 }); 41 42 Schema::create('documents', function (Blueprint $table) { 43 $table->id(); 44 $table->foreignId('type_id'); 45 $table->integer('number'); 46 $table->unique(['type_id', 'number']); 47 $table->string('name'); 48 $table->string('description')->nullable(); 49 $table->string('from')->nullable(); 50 $table->foreignId('original_id')->nullable(); 51 $table->foreign('original_id')->references('id')->on('revisions'); 52 $table->foreignId('head_id')->nullable(); 53 $table->foreign('head_id')->references('id')->on('revisions'); 54 $table->foreignId('dossier_id')->nullable(); 55 $table->foreign('dossier_id')->references('id')->on('dossiers'); 56 $table->foreignId('meet_id')->nullable(); 57 $table->foreignId('created_by')->nullable()->constrained('users')->cascadeOnUpdate()->nullOnDelete(); 58 $table->foreignId('folder_id')->nullable()->constrained('folders')->cascadeOnUpdate()->nullOnDelete(); 59 $table->foreignId('template_id')->nullable()->constrained('templates')->cascadeOnUpdate()->nullOnDelete(); 60 // $table->foreign('meet_id')->references('id')->on('meets'); 61 $table->foreignId('eml_template_id')->nullable()->constrained('eml_templates')->cascadeOnUpdate()->nullOnDelete(); 62 $table->softDeletes(); 63 $table->timestamps(); 64 }); 65 66 // declarar las relaciones independientemente del orden de creacion de las tablas 67 Schema::table('revisions', function (Blueprint $table) { 68 $table->foreign('previous_id')->references('id')->on('revisions'); 69 $table->foreign('document_id')->references('id')->on('documents'); 70 }); 71 } 72 73 /** 74 * Reverse the migrations. 75 * 76 * @return void 77 */ 78 public function down() 79 { 80 Schema::dropIfExists('documents'); 81 Schema::dropIfExists('revisions'); 82 } 83 }