Skip to content

Commit 5bb5769

Browse files
committed
create migrations all in case database
1 parent ecc90fc commit 5bb5769

11 files changed

+993
-1
lines changed

database/migrations/2023_08_03_000000_create_users_table.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
public function up(): void
1414
{
1515
Schema::create('users', function (Blueprint $table) {
16-
$table->uuid('id')->primary();
16+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
1717
$table->string('name');
1818
$table->string('username', 50)->unique();
1919
$table->string('email', 100)->unique();
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?php
2+
3+
declare (strict_types = 1);
4+
5+
use Hyperf\Database\Migrations\Migration;
6+
use Hyperf\Database\Schema\Blueprint;
7+
use Hypervel\Support\Facades\Schema;
8+
9+
return new class extends Migration
10+
{
11+
/**
12+
* Run the migrations.
13+
*/
14+
public function up(): void
15+
{
16+
17+
// users
18+
/*Schema::create('users', function (Blueprint $table) {
19+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
20+
$table->string('name');
21+
$table->string('username', 50)->unique();
22+
$table->string('email', 100)->unique();
23+
$table->string('password');
24+
$table->string('full_name', 100);
25+
$table->string('phone', 20)->nullable();
26+
$table->string('avatar_url', 255)->nullable();
27+
$table->boolean('is_active')->default(true);
28+
$table->timestamp('last_login')->nullable();
29+
$table->string('remember_token', 100)->nullable();
30+
$table->timestamp('email_verified_at')->nullable();
31+
$table->timestamps();
32+
});*/
33+
34+
// Roles table
35+
Schema::create('roles', function (Blueprint $table) {
36+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
37+
$table->string('name', 255);
38+
$table->string('guard_name', 255);
39+
40+
$table->datetimes();
41+
42+
$table->unique(['name', 'guard_name'], 'unique_name_guard');
43+
});
44+
45+
// Permissions table
46+
Schema::create('permissions', function (Blueprint $table) {
47+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
48+
$table->string('name', 255);
49+
$table->string('guard_name', 255);
50+
51+
$table->datetimes();
52+
53+
$table->unique(['name', 'guard_name'], 'unique_name_guard');
54+
});
55+
56+
// Model Has Roles table
57+
Schema::create('model_has_roles', function (Blueprint $table) {
58+
$table->uuid('role_id');
59+
$table->string('model_type', 255);
60+
$table->uuid('model_id');
61+
$table->primary(['role_id', 'model_id', 'model_type']);
62+
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
63+
$table->index(['model_type', 'model_id'], 'idx_model_has_roles_model');
64+
});
65+
66+
// Model Has Permissions table
67+
Schema::create('model_has_permissions', function (Blueprint $table) {
68+
$table->uuid('permission_id');
69+
$table->string('model_type', 255);
70+
$table->uuid('model_id');
71+
$table->primary(['permission_id', 'model_id', 'model_type']);
72+
$table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
73+
$table->index(['model_type', 'model_id'], 'idx_model_has_permissions_model');
74+
});
75+
76+
// Role Has Permissions table
77+
Schema::create('role_has_permissions', function (Blueprint $table) {
78+
$table->uuid('permission_id');
79+
$table->uuid('role_id');
80+
$table->primary(['permission_id', 'role_id']);
81+
$table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
82+
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
83+
});
84+
}
85+
86+
/**
87+
* Reverse the migrations.
88+
*/
89+
public function down()
90+
{
91+
Schema::dropIfExists('model_has_roles');
92+
Schema::dropIfExists('model_has_permissions');
93+
Schema::dropIfExists('role_has_permissions');
94+
Schema::dropIfExists('permissions');
95+
Schema::dropIfExists('roles');
96+
}
97+
};
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
<?php
2+
3+
declare (strict_types = 1);
4+
5+
use Hyperf\Database\Migrations\Migration;
6+
use Hyperf\Database\Schema\Blueprint;
7+
use Hypervel\Support\Facades\Schema;
8+
9+
return new class extends Migration
10+
{
11+
/**
12+
* Run the migrations.
13+
*/
14+
public function up(): void
15+
{
16+
/*Schema::create('school_management', function (Blueprint $table) {
17+
$table->bigIncrements('id');
18+
$table->datetimes();
19+
});*/
20+
21+
// Parents table
22+
Schema::create('parents', function (Blueprint $table) {
23+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
24+
$table->uuid('user_id')->unique();
25+
$table->string('occupation', 100)->nullable();
26+
$table->text('address')->nullable();
27+
28+
$table->datetimes();
29+
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
30+
});
31+
32+
// Teachers table
33+
Schema::create('teachers', function (Blueprint $table) {
34+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
35+
$table->uuid('user_id')->unique();
36+
$table->string('nip', 20)->unique();
37+
$table->string('expertise', 100)->nullable();
38+
$table->date('join_date');
39+
$table->string('status', 20)->default('active');
40+
41+
$table->datetimes();
42+
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
43+
});
44+
45+
// Classes table
46+
Schema::create('classes', function (Blueprint $table) {
47+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
48+
$table->string('name', 50);
49+
$table->string('level', 20);
50+
$table->uuid('homeroom_teacher_id')->nullable();
51+
$table->string('academic_year', 9);
52+
$table->integer('capacity')->nullable();
53+
54+
$table->datetimes();
55+
$table->foreign('homeroom_teacher_id')->references('id')->on('teachers')->onDelete('set null');
56+
});
57+
58+
// Students table
59+
Schema::create('students', function (Blueprint $table) {
60+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
61+
$table->uuid('user_id')->unique();
62+
$table->string('nisn', 20)->unique();
63+
$table->uuid('class_id')->nullable();
64+
$table->date('birth_date')->nullable();
65+
$table->string('birth_place', 50)->nullable();
66+
$table->text('address')->nullable();
67+
$table->uuid('parent_id')->nullable();
68+
$table->date('enrollment_date');
69+
$table->string('status', 20)->default('active');
70+
71+
$table->datetimes();
72+
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
73+
$table->foreign('class_id')->references('id')->on('classes')->onDelete('set null');
74+
$table->foreign('parent_id')->references('id')->on('parents')->onDelete('set null');
75+
});
76+
77+
// Staff table
78+
Schema::create('staff', function (Blueprint $table) {
79+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
80+
$table->uuid('user_id')->unique();
81+
$table->string('position', 100);
82+
$table->string('department', 100)->nullable();
83+
$table->date('join_date');
84+
$table->string('status', 20)->default('active');
85+
86+
$table->datetimes();
87+
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
88+
});
89+
90+
// Subjects table
91+
Schema::create('subjects', function (Blueprint $table) {
92+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
93+
$table->string('code', 20)->unique();
94+
$table->string('name', 100);
95+
$table->text('description')->nullable();
96+
$table->integer('credit_hours')->nullable();
97+
98+
$table->datetimes();
99+
});
100+
101+
// Class-Subject relationship
102+
Schema::create('class_subjects', function (Blueprint $table) {
103+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
104+
$table->uuid('class_id');
105+
$table->uuid('subject_id');
106+
$table->uuid('teacher_id')->nullable();
107+
$table->text('schedule_info')->nullable();
108+
$table->unique(['class_id', 'subject_id']);
109+
110+
$table->datetimes();
111+
$table->foreign('class_id')->references('id')->on('classes')->onDelete('cascade');
112+
$table->foreign('subject_id')->references('id')->on('subjects')->onDelete('cascade');
113+
$table->foreign('teacher_id')->references('id')->on('teachers')->onDelete('set null');
114+
});
115+
116+
// Schedules table
117+
Schema::create('schedules', function (Blueprint $table) {
118+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
119+
$table->uuid('class_subject_id');
120+
$table->smallInteger('day_of_week');
121+
$table->time('start_time');
122+
$table->time('end_time');
123+
$table->string('room', 50)->nullable();
124+
125+
$table->datetimes();
126+
$table->foreign('class_subject_id')->references('id')->on('class_subjects')->onDelete('cascade');
127+
});
128+
129+
// School Inventory table
130+
Schema::create('school_inventory', function (Blueprint $table) {
131+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
132+
$table->string('name', 100);
133+
$table->string('category', 50);
134+
$table->integer('quantity');
135+
$table->string('location', 100)->nullable();
136+
$table->string('condition', 50)->nullable();
137+
$table->date('purchase_date')->nullable();
138+
$table->date('last_maintenance')->nullable();
139+
140+
$table->datetimes();
141+
});
142+
}
143+
144+
/**
145+
* Reverse the migrations.
146+
*/
147+
public function down()
148+
{
149+
Schema::dropIfExists('schedules');
150+
Schema::dropIfExists('class_subjects');
151+
Schema::dropIfExists('subjects');
152+
Schema::dropIfExists('students');
153+
Schema::dropIfExists('classes');
154+
Schema::dropIfExists('teachers');
155+
Schema::dropIfExists('parents');
156+
Schema::dropIfExists('staff');
157+
Schema::dropIfExists('school_inventory');
158+
}
159+
};
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?php
2+
3+
declare (strict_types = 1);
4+
5+
use Hyperf\Database\Migrations\Migration;
6+
use Hyperf\Database\Schema\Blueprint;
7+
use Hypervel\Support\Facades\Schema;
8+
9+
return new class extends Migration
10+
{
11+
/**
12+
* Run the migrations.
13+
*/
14+
public function up(): void
15+
{
16+
/* Schema::create('ppdb', function (Blueprint $table) {
17+
$table->bigIncrements('id');
18+
$table->datetimes();
19+
});*/
20+
21+
// PPDB Registrations
22+
Schema::create('ppdb_registrations', function (Blueprint $table) {
23+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
24+
$table->string('registration_number', 20)->unique();
25+
$table->string('full_name', 100);
26+
$table->date('birth_date');
27+
$table->string('birth_place', 50);
28+
$table->string('gender', 10);
29+
$table->string('parent_name', 100);
30+
$table->string('parent_phone', 20);
31+
$table->text('address');
32+
$table->string('previous_school', 100)->nullable();
33+
$table->string('intended_class', 50);
34+
$table->string('status', 20)->default('pending');
35+
$table->timestamp('registration_date')->useCurrent();
36+
37+
$table->datetimes();
38+
});
39+
40+
// PPDB Documents
41+
Schema::create('ppdb_documents', function (Blueprint $table) {
42+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
43+
$table->uuid('registration_id');
44+
$table->string('document_type', 50);
45+
$table->string('file_url', 255);
46+
$table->string('verification_status', 20)->default('pending');
47+
$table->uuid('verified_by')->nullable();
48+
$table->timestamp('verified_at')->nullable();
49+
$table->text('notes')->nullable();
50+
51+
$table->datetimes();
52+
$table->foreign('registration_id')->references('id')->on('ppdb_registrations')->onDelete('cascade');
53+
$table->foreign('verified_by')->references('id')->on('users')->onDelete('set null');
54+
});
55+
56+
// PPDB Tests
57+
Schema::create('ppdb_tests', function (Blueprint $table) {
58+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
59+
$table->uuid('registration_id');
60+
$table->string('test_type', 50);
61+
$table->decimal('score', 5, 2)->nullable();
62+
$table->timestamp('test_date')->nullable();
63+
$table->uuid('administrator_id')->nullable();
64+
65+
$table->datetimes();
66+
$table->foreign('registration_id')->references('id')->on('ppdb_registrations')->onDelete('cascade');
67+
$table->foreign('administrator_id')->references('id')->on('users')->onDelete('set null');
68+
});
69+
70+
// PPDB Announcements
71+
Schema::create('ppdb_announcements', function (Blueprint $table) {
72+
$table->uuid('id')->primary()->default(DB::raw('(UUID())'));
73+
$table->uuid('registration_id');
74+
$table->string('announcement_type', 50);
75+
$table->text('content');
76+
$table->uuid('published_by')->nullable();
77+
$table->timestamp('published_at')->useCurrent();
78+
79+
$table->datetimes();
80+
$table->foreign('registration_id')->references('id')->on('ppdb_registrations')->onDelete('cascade');
81+
$table->foreign('published_by')->references('id')->on('users')->onDelete('set null');
82+
});
83+
}
84+
85+
/**
86+
* Reverse the migrations.
87+
*/
88+
public function down()
89+
{
90+
Schema::dropIfExists('ppdb_documents');
91+
Schema::dropIfExists('ppdb_tests');
92+
Schema::dropIfExists('ppdb_announcements');
93+
Schema::dropIfExists('ppdb_registrations');
94+
}
95+
};

0 commit comments

Comments
 (0)