From 1cfa539eefe616e74c87dd8754ce5d93448fcf54 Mon Sep 17 00:00:00 2001 From: Harish Durga Date: Mon, 15 Aug 2022 09:12:53 +0530 Subject: [PATCH 1/3] 26 Remove unique constraint from quiz questions table --- ...2021_05_22_053359_create_quizzes_table.php | 1 - ...q_constraint_from_quiz_questions_table.php | 40 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2022_08_15_033405_remove_unq_constraint_from_quiz_questions_table.php diff --git a/database/migrations/2021_05_22_053359_create_quizzes_table.php b/database/migrations/2021_05_22_053359_create_quizzes_table.php index 1271ef6..75d1a6c 100644 --- a/database/migrations/2021_05_22_053359_create_quizzes_table.php +++ b/database/migrations/2021_05_22_053359_create_quizzes_table.php @@ -102,7 +102,6 @@ public function up() $table->unsignedInteger('order')->default(0); $table->timestamps(); $table->softDeletes(); - $table->unique(['quiz_id', 'question_id']); }); // Quiz Attempts Table diff --git a/database/migrations/2022_08_15_033405_remove_unq_constraint_from_quiz_questions_table.php b/database/migrations/2022_08_15_033405_remove_unq_constraint_from_quiz_questions_table.php new file mode 100644 index 0000000..7bd1e9a --- /dev/null +++ b/database/migrations/2022_08_15_033405_remove_unq_constraint_from_quiz_questions_table.php @@ -0,0 +1,40 @@ +tableNames = config('laravel-quiz.table_names'); + } + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + Schema::table($this->tableNames['quiz_questions'], function (Blueprint $table) { + $sm = Schema::getConnection()->getDoctrineSchemaManager(); + $indexesFound = $sm->listTableIndexes($this->tableNames['quiz_questions']); + if (array_key_exists($this->tableNames['quiz_questions'] . "_quiz_id_question_id_unique", $indexesFound)) + $table->dropUnique($this->tableNames['quiz_questions'] . "_quiz_id_question_id_unique"); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('quiz_questions', function (Blueprint $table) { + // + }); + } +}; From 50d8e56c38188591d1604e59653c9e5f28ecfc14 Mon Sep 17 00:00:00 2001 From: Harish Durga Date: Mon, 15 Aug 2022 10:26:10 +0530 Subject: [PATCH 2/3] 26 migration file to drop unique constraint --- ...405_remove_unq_constraint_from_quiz_questions_table.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/database/migrations/2022_08_15_033405_remove_unq_constraint_from_quiz_questions_table.php b/database/migrations/2022_08_15_033405_remove_unq_constraint_from_quiz_questions_table.php index 7bd1e9a..1cdd595 100644 --- a/database/migrations/2022_08_15_033405_remove_unq_constraint_from_quiz_questions_table.php +++ b/database/migrations/2022_08_15_033405_remove_unq_constraint_from_quiz_questions_table.php @@ -21,8 +21,13 @@ public function up() Schema::table($this->tableNames['quiz_questions'], function (Blueprint $table) { $sm = Schema::getConnection()->getDoctrineSchemaManager(); $indexesFound = $sm->listTableIndexes($this->tableNames['quiz_questions']); - if (array_key_exists($this->tableNames['quiz_questions'] . "_quiz_id_question_id_unique", $indexesFound)) + if (array_key_exists($this->tableNames['quiz_questions'] . "_quiz_id_question_id_unique", $indexesFound)) { + $table->dropForeign($this->tableNames['quiz_questions'] . '_question_id_foreign'); + $table->dropForeign($this->tableNames['quiz_questions'] . '_quiz_id_foreign'); $table->dropUnique($this->tableNames['quiz_questions'] . "_quiz_id_question_id_unique"); + $table->foreignId('quiz_id')->change()->constrained($this->tableNames['quizzes'])->cascadeOnDelete(); + $table->foreignId('question_id')->change()->constrained($this->tableNames['questions'])->cascadeOnDelete(); + } }); } From 4fad53c861699a97d02ab18e9f74c74b03c25269 Mon Sep 17 00:00:00 2001 From: Harish Durga Date: Tue, 16 Aug 2022 07:59:32 +0530 Subject: [PATCH 3/3] 26 Updated github actions yaml file to use mysql instead of sqlite for testing --- .github/workflows/main.yml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ee475d4..5d31b56 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,12 +13,27 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - php: [8.0] + php: [8.0, 8.1] laravel: [9.*] stability: [prefer-stable] include: - laravel: 9.* testbench: ^7.0 + env: + DB_CONNECTION: testing + DB_DATABASE: laravel + DB_USERNAME: root + DB_PASSWORD: TestDB@1234 + services: + mysql: + image: mysql:latest + env: + MYSQL_ALLOW_EMPTY_PASSWORD: false + MYSQL_ROOT_PASSWORD: TestDB@1234 + MYSQL_DATABASE: laravel + ports: + - 3306/tcp + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} @@ -30,7 +45,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysql, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo coverage: none - name: Setup problem matchers @@ -43,3 +58,5 @@ jobs: composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Execute tests run: vendor/bin/phpunit + env: + DB_PORT: ${{ job.services.mysql.ports['3306'] }}