remaining failures are now broader contract/workflow assertions and route/API behavior issues
API CI/CD / Validate (composer + pint) (push) Successful in 2m47s
API CI/CD / Test (PHPUnit) (push) Failing after 3m5s
API CI/CD / Build frontend assets (push) Failing after 5m22s
API CI/CD / Security audit (push) Failing after 34s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped
API CI/CD / Validate (composer + pint) (push) Successful in 2m47s
API CI/CD / Test (PHPUnit) (push) Failing after 3m5s
API CI/CD / Build frontend assets (push) Failing after 5m22s
API CI/CD / Security audit (push) Failing after 34s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped
This commit is contained in:
@@ -19,25 +19,25 @@ CREATE TABLE `users` (
|
||||
`firstname` varchar(255) NOT NULL,
|
||||
`lastname` varchar(255) NOT NULL,
|
||||
`gender` enum('Male','Female') DEFAULT NULL,
|
||||
`cellphone` varchar(25) NOT NULL,
|
||||
`cellphone` varchar(25) DEFAULT NULL,
|
||||
`email` varchar(255) NOT NULL,
|
||||
`address_street` varchar(255) NOT NULL,
|
||||
`address_street` varchar(255) DEFAULT NULL,
|
||||
`apt` varchar(25) DEFAULT NULL,
|
||||
`city` varchar(255) NOT NULL,
|
||||
`state` varchar(25) NOT NULL,
|
||||
`zip` varchar(25) NOT NULL,
|
||||
`accept_school_policy` tinyint(1) NOT NULL,
|
||||
`city` varchar(255) DEFAULT NULL,
|
||||
`state` varchar(25) DEFAULT NULL,
|
||||
`zip` varchar(25) DEFAULT NULL,
|
||||
`accept_school_policy` tinyint(1) DEFAULT '0',
|
||||
`is_verified` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`status` varchar(10) NOT NULL DEFAULT 'Inactive',
|
||||
`is_suspended` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`failed_attempts` int DEFAULT '0',
|
||||
`password` varchar(255) NOT NULL,
|
||||
`password` varchar(255) DEFAULT NULL,
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
`updated_at` datetime DEFAULT NULL,
|
||||
`token` varchar(255) DEFAULT NULL,
|
||||
`account_id` varchar(255) DEFAULT NULL,
|
||||
`user_type` enum('primary','secondary','tertiary') DEFAULT 'primary',
|
||||
`semester` varchar(255) NOT NULL,
|
||||
`semester` varchar(255) DEFAULT NULL,
|
||||
`school_year` varchar(9) DEFAULT NULL,
|
||||
`rfid_tag` varchar(100) DEFAULT NULL,
|
||||
`last_failed_at` datetime DEFAULT NULL
|
||||
|
||||
@@ -15,22 +15,22 @@ return new class extends Migration
|
||||
SqliteCompat::statement(<<<'SQL'
|
||||
CREATE TABLE `students` (
|
||||
`id` int UNSIGNED NOT NULL,
|
||||
`school_id` char(100) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`school_id` char(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`firstname` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`lastname` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`dob` date DEFAULT NULL,
|
||||
`age` int NOT NULL,
|
||||
`gender` varchar(10) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`age` int DEFAULT NULL,
|
||||
`gender` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`is_active` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`registration_grade` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`is_new` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1 = new student, 0 = returning student',
|
||||
`photo_consent` tinyint(1) NOT NULL,
|
||||
`parent_id` int NOT NULL,
|
||||
`photo_consent` tinyint(1) DEFAULT NULL,
|
||||
`parent_id` int DEFAULT NULL,
|
||||
`registration_date` datetime DEFAULT NULL,
|
||||
`tuition_paid` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`rfid_tag` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`semester` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`year_of_registration` varchar(25) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`year_of_registration` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`school_year` varchar(9) COLLATE utf8mb4_general_ci DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
SQL
|
||||
|
||||
@@ -15,15 +15,15 @@ return new class extends Migration
|
||||
SqliteCompat::statement(<<<'SQL'
|
||||
CREATE TABLE `parents` (
|
||||
`id` int NOT NULL,
|
||||
`secondparent_firstname` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`secondparent_lastname` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`secondparent_firstname` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`secondparent_lastname` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`secondparent_gender` enum('Male','Female') COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`secondparent_email` varchar(150) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`secondparent_phone` varchar(15) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`firstparent_id` int NOT NULL,
|
||||
`secondparent_id` int NOT NULL,
|
||||
`secondparent_email` varchar(150) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`secondparent_phone` varchar(15) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`firstparent_id` int DEFAULT NULL,
|
||||
`secondparent_id` int DEFAULT NULL,
|
||||
`semester` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`school_year` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`school_year` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
@@ -18,7 +18,7 @@ CREATE TABLE `student_class` (
|
||||
`student_id` int NOT NULL,
|
||||
`class_section_id` int DEFAULT NULL,
|
||||
`is_event_only` tinyint UNSIGNED NOT NULL DEFAULT '0',
|
||||
`semester` varchar(255) NOT NULL,
|
||||
`semester` varchar(255) DEFAULT NULL,
|
||||
`school_year` varchar(25) DEFAULT NULL,
|
||||
`description` text,
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
|
||||
@@ -18,7 +18,7 @@ CREATE TABLE `teacher_class` (
|
||||
`class_section_id` int DEFAULT NULL,
|
||||
`teacher_id` int DEFAULT NULL,
|
||||
`position` enum('main','ta') COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`semester` varchar(25) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`semester` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`school_year` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`description` text COLLATE utf8mb4_general_ci,
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
|
||||
@@ -20,7 +20,7 @@ CREATE TABLE `classSection` (
|
||||
`class_section_name` varchar(100) NOT NULL,
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
`updated_at` datetime DEFAULT NULL,
|
||||
`semester` varchar(255) NOT NULL,
|
||||
`semester` varchar(255) DEFAULT NULL,
|
||||
`school_year` varchar(9) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
|
||||
SQL
|
||||
|
||||
@@ -16,9 +16,9 @@ return new class extends Migration
|
||||
CREATE TABLE `classes` (
|
||||
`id` int UNSIGNED NOT NULL,
|
||||
`class_name` varchar(100) NOT NULL,
|
||||
`schedule` varchar(100) NOT NULL,
|
||||
`capacity` int NOT NULL,
|
||||
`semester` varchar(255) NOT NULL,
|
||||
`schedule` varchar(100) DEFAULT NULL,
|
||||
`capacity` int DEFAULT NULL,
|
||||
`semester` varchar(255) DEFAULT NULL,
|
||||
`school_year` varchar(9) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
|
||||
SQL
|
||||
|
||||
@@ -17,14 +17,14 @@ CREATE TABLE `enrollments` (
|
||||
`id` int UNSIGNED NOT NULL,
|
||||
`student_id` int UNSIGNED NOT NULL,
|
||||
`class_section_id` int UNSIGNED DEFAULT NULL,
|
||||
`parent_id` int UNSIGNED NOT NULL,
|
||||
`enrollment_date` date NOT NULL,
|
||||
`parent_id` int UNSIGNED DEFAULT NULL,
|
||||
`enrollment_date` date DEFAULT NULL,
|
||||
`enrollment_status` enum('admission under review','payment pending','enrolled','withdraw under review','refund pending','withdrawn','waitlist','denied') COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'admission under review',
|
||||
`withdrawal_date` date DEFAULT NULL,
|
||||
`is_withdrawn` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`admission_status` enum('pending','accepted','denied') COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'pending',
|
||||
`semester` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`school_year` varchar(25) COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`school_year` varchar(25) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
`updated_at` datetime DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
+1
@@ -72,6 +72,7 @@ return new class extends Migration
|
||||
$exists = DB::table('configuration')->where('config_key', 'promotion.section_capacity')->exists();
|
||||
if (! $exists) {
|
||||
DB::table('configuration')->insert([
|
||||
'id' => 10000,
|
||||
'config_key' => 'promotion.section_capacity',
|
||||
'config_value' => '20',
|
||||
]);
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
$this->addColumns('classes', [
|
||||
'created_at' => fn (Blueprint $table) => $table->timestamp('created_at')->nullable(),
|
||||
'updated_at' => fn (Blueprint $table) => $table->timestamp('updated_at')->nullable(),
|
||||
]);
|
||||
|
||||
$this->addColumns('event_charges', [
|
||||
'created_by' => fn (Blueprint $table) => $table->unsignedInteger('created_by')->nullable(),
|
||||
]);
|
||||
|
||||
$this->addColumns('students', [
|
||||
'created_at' => fn (Blueprint $table) => $table->timestamp('created_at')->nullable(),
|
||||
'updated_at' => fn (Blueprint $table) => $table->timestamp('updated_at')->nullable(),
|
||||
'badge_scan' => fn (Blueprint $table) => $table->string('badge_scan', 100)->nullable(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
$this->dropColumns('students', ['badge_scan', 'updated_at', 'created_at']);
|
||||
$this->dropColumns('event_charges', ['created_by']);
|
||||
$this->dropColumns('classes', ['updated_at', 'created_at']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, callable(Blueprint): void> $columns
|
||||
*/
|
||||
private function addColumns(string $table, array $columns): void
|
||||
{
|
||||
if (! Schema::hasTable($table)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$missing = array_filter(
|
||||
array_keys($columns),
|
||||
static fn (string $column): bool => ! Schema::hasColumn($table, $column)
|
||||
);
|
||||
|
||||
if ($missing === []) {
|
||||
return;
|
||||
}
|
||||
|
||||
Schema::table($table, function (Blueprint $blueprint) use ($columns, $missing): void {
|
||||
foreach ($missing as $column) {
|
||||
$columns[$column]($blueprint);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<string> $columns
|
||||
*/
|
||||
private function dropColumns(string $table, array $columns): void
|
||||
{
|
||||
if (! Schema::hasTable($table)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$existing = array_filter(
|
||||
$columns,
|
||||
static fn (string $column): bool => Schema::hasColumn($table, $column)
|
||||
);
|
||||
|
||||
if ($existing === []) {
|
||||
return;
|
||||
}
|
||||
|
||||
Schema::table($table, function (Blueprint $blueprint) use ($existing): void {
|
||||
$blueprint->dropColumn($existing);
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user