Files
abcParser/database/migrations/2015_11_07_012716_create_parseabc_tables.php
2016-04-15 21:44:45 -04:00

136 lines
5.8 KiB
PHP

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateParseabcTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('collections', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name', 255)->unique();
$table->timestamps();
});
Schema::create('collection_attributes', function (Blueprint $table) {
$table->bigInteger('collection_id')->unsigned();
$table->enum('type', ['Author','Composer','Discography','Rhythm','History','File','Book','Note','Source','Transcriber']);
$table->string('string', 255);
$table->tinyInteger('ordering')->unsigned()->default(0);
$table->timestamps();
$table->primary(['collection_id','type','ordering']);
$table->foreign('collection_id')->references('id')->on('collections')->onUpdate('cascade')->onDelete('cascade');
});
// user profiles/roles/groups
// Schema::create('Groups', function (Blueprint $table) {
// $table->bigIncrements('id');
// $table->string('name', 20);
// $table->string('description', 100);
// $table->timestamps();
// });
Schema::create('persons', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name', 63);
$table->string('email', 255);
$table->timestamps();
});
Schema::create('tunes', function (Blueprint $table) {
$table->bigIncrements('id');
$table->tinyInteger('x_id')->default('1');
$table->timestamps();
});
Schema::create('tune_settings', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('tune_id')->unsigned();
$table->string('meter', 3)->default('C');
$table->string('keysig',5)->default('C');
$table->string('filename', 255)->nullable();
$table->string('tempo', 10)->nullable();
$table->string('L', 5)->nullable();
$table->text('music')->nullable();
$table->string('parts', 255)->nullable();
$table->timestamps();
$table->foreign('tune_id')->references('id')->on('tunes')->onUpdate('cascade')->onDelete('cascade');
});
Schema::create('tune_attributes', function (Blueprint $table) {
$table->bigInteger('tune_id')->unsigned();
$table->enum('type', ['Title','Group','Origin','Rhythm','History']);
$table->string('string', 255);
$table->tinyInteger('ordering')->unsigned()->default(0);
$table->timestamps();
$table->primary(['tune_id','type','ordering']);
$table->foreign('tune_id')->references('id')->on('tunes')->onUpdate('cascade')->onDelete('cascade');
});
Schema::create('tune_books', function (Blueprint $table) {
$table->bigInteger('collection_id')->unsigned();
$table->bigInteger('setting_id')->unsigned();
$table->timestamps();
$table->primary(['collection_id','setting_id']);
$table->foreign('collection_id')->references('id')->on('collections')->onUpdate('cascade')->onDelete('cascade');
$table->foreign('setting_id')->references('id')->on('tune_settings')->onUpdate('cascade')->onDelete('cascade');
});
Schema::create('tune_persons', function (Blueprint $table) {
$table->bigInteger('tune_id')->unsigned();
$table->bigInteger('person_id')->unsigned();
$table->enum('type', ['Author','Composer','Transcriber','']);
$table->tinyInteger('ordering')->unsigned()->default(0);
$table->timestamps();
$table->primary(['tune_id','person_id','type','ordering']);
$table->foreign('tune_id')->references('id')->on('tunes')->onUpdate('cascade')->onDelete('cascade');
$table->foreign('person_id')->references('id')->on('persons')->onUpdate('cascade')->onDelete('cascade');
});
Schema::create('tune_setting_attributes', function (Blueprint $table) {
$table->bigInteger('setting_id')->unsigned();
$table->enum('type', ['Transcriber','Note','Discography','Source','Word','Book']);
$table->string('string', 255);
$table->tinyInteger('ordering')->unsigned()->default(0);
$table->timestamps();
$table->primary(['setting_id','type','ordering']);
$table->foreign('setting_id')->references('id')->on('tune_settings')->onUpdate('cascade')->onDelete('cascade');
});
Schema::create('tune_setting_persons', function (Blueprint $table) {
$table->bigInteger('setting_id')->unsigned();
$table->bigInteger('person_id')->unsigned();
$table->tinyInteger('ordering')->unsigned()->default(0);
$table->timestamps();
$table->primary(['setting_id','person_id','ordering']);
$table->foreign('setting_id')->references('id')->on('tune_settings')->onUpdate('cascade')->onDelete('cascade');
$table->foreign('person_id')->references('id')->on('persons')->onUpdate('cascade')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('tune_setting_persons');
Schema::drop('tune_setting_attributes');
Schema::drop('tune_persons');
Schema::drop('tune_books');
Schema::drop('tune_attributes');
// Schema::drop('Groups');
Schema::drop('tune_settings');
Schema::drop('tunes');
Schema::drop('persons');
Schema::drop('collections');
}
}