From 1840e5ff47482ef9788276286faf216e50cb93ad Mon Sep 17 00:00:00 2001 From: Aji Kamaludin Date: Wed, 24 May 2023 20:24:23 +0700 Subject: [PATCH] migrate to ulid --- .env.example | 2 +- Dockerfile | 9 +++++-- app/Http/Controllers/RoleController.php | 4 +-- app/Http/Controllers/UserController.php | 6 ++--- app/Models/Model.php | 4 +-- app/Models/Permission.php | 4 +-- app/Models/RolePermission.php | 4 +-- app/Models/Setting.php | 4 +-- app/Models/User.php | 4 +-- .../2014_10_12_000000_create_users_table.php | 4 +-- ...023_02_05_130618_create_settings_table.php | 2 +- .../2023_02_05_153325_create_roles_table.php | 8 +++--- ...5_153330_create_role_permissions_table.php | 6 ++--- database/seeders/PermissionSeeder.php | 25 +++++++++---------- 14 files changed, 45 insertions(+), 41 deletions(-) diff --git a/.env.example b/.env.example index 850c4f5..edac9d5 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -APP_NAME='Template App' +APP_NAME='App Name' APP_ENV=local APP_KEY= APP_DEBUG=true diff --git a/Dockerfile b/Dockerfile index a5afe17..728b858 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,8 +32,13 @@ RUN apt-get update && apt-get dist-upgrade -y && \ # Clear cache RUN apt-get clean && rm -rf /var/lib/apt/lists/* -# Install PHP extensions -RUN docker-php-ext-install pdo mysqli pdo_mysql mbstring exif pcntl bcmath gd intl zip pgsql pdo_pgsql curl xml +# Install PHP extensions (default version) +# RUN docker-php-ext-install pdo mysqli pdo_mysql mbstring exif pcntl bcmath gd intl zip pgsql pdo_pgsql curl xml + +# Install PHP extension with install php extension +ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ +RUN chmod +x /usr/local/bin/install-php-extensions +RUN install-php-extensions pdo mysqli pdo_mysql mbstring exif pcntl bcmath gd intl zip pgsql pdo_pgsql curl xml # Get latest Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php index 3405630..5f9c6ee 100644 --- a/app/Http/Controllers/RoleController.php +++ b/app/Http/Controllers/RoleController.php @@ -41,7 +41,7 @@ class RoleController extends Controller $request->validate([ 'name' => 'string|required|max:255', 'permissions' => 'array|required', - 'permissions.*.id' => 'uuid|required|exists:permissions,id', + 'permissions.*.id' => 'ulid|required|exists:permissions,id', ]); DB::beginTransaction(); @@ -71,7 +71,7 @@ class RoleController extends Controller $request->validate([ 'name' => 'string|required|max:255', 'permissions' => 'array|required', - 'permissions.*.id' => 'uuid|required|exists:permissions,id', + 'permissions.*.id' => 'ulid|required|exists:permissions,id', ]); if ($role->flag == 1) { diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 9ebe010..42fff45 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -30,7 +30,7 @@ class UserController extends Controller 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|max:255', - 'role_id' => 'required|uuid|exists:roles,id', + 'role_id' => 'required|ulid|exists:roles,id', ]); User::create([ @@ -48,13 +48,13 @@ class UserController extends Controller { $request->validate([ 'name' => 'required|string|max:255', - 'email' => 'required|email|unique:users,email,'.$user->id, + 'email' => 'required|email|unique:users,email,' . $user->id, 'password' => 'nullable|string|max:255', ]); if ($user->role != null) { $request->validate([ - 'role_id' => 'required|uuid|exists:roles,id', + 'role_id' => 'required|ulid|exists:roles,id', ]); } diff --git a/app/Models/Model.php b/app/Models/Model.php index 8a4b121..bbffdc8 100644 --- a/app/Models/Model.php +++ b/app/Models/Model.php @@ -4,14 +4,14 @@ namespace App\Models; use App\Models\Traits\CascadeSoftDeletes; use App\Models\Traits\UserTrackable; -use Illuminate\Database\Eloquent\Concerns\HasUuids; +use Illuminate\Database\Eloquent\Concerns\HasUlids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model as BaseModel; use Illuminate\Database\Eloquent\SoftDeletes; class Model extends BaseModel { - use HasFactory, HasUuids, UserTrackable, SoftDeletes, CascadeSoftDeletes; + use HasFactory, HasUlids, UserTrackable, SoftDeletes, CascadeSoftDeletes; public $cascadeDeletes = []; } diff --git a/app/Models/Permission.php b/app/Models/Permission.php index f4ac24b..b34d77a 100644 --- a/app/Models/Permission.php +++ b/app/Models/Permission.php @@ -2,13 +2,13 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Concerns\HasUuids; +use Illuminate\Database\Eloquent\Concerns\HasUlids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Permission extends Model { - use HasFactory, HasUuids; + use HasFactory, HasUlids; protected $fillable = [ 'name', diff --git a/app/Models/RolePermission.php b/app/Models/RolePermission.php index e9c9432..ca66aba 100644 --- a/app/Models/RolePermission.php +++ b/app/Models/RolePermission.php @@ -2,14 +2,14 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Concerns\HasUuids; +use Illuminate\Database\Eloquent\Concerns\HasUlids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class RolePermission extends Model { - use HasFactory, SoftDeletes, HasUuids; + use HasFactory, SoftDeletes, HasUlids; protected $fillable = [ 'role_id', diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 4425089..f45947e 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -2,14 +2,14 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Concerns\HasUuids; +use Illuminate\Database\Eloquent\Concerns\HasUlids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Setting extends Model { - use HasFactory, SoftDeletes, HasUuids; + use HasFactory, SoftDeletes, HasUlids; protected $fillable = [ 'key', diff --git a/app/Models/User.php b/app/Models/User.php index 5cb9d29..876ddd2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -4,7 +4,7 @@ namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; -use Illuminate\Database\Eloquent\Concerns\HasUuids; +use Illuminate\Database\Eloquent\Concerns\HasUlids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; @@ -12,7 +12,7 @@ use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { - use HasApiTokens, HasFactory, Notifiable, HasUuids; + use HasApiTokens, HasFactory, Notifiable, HasUlids; /** * The attributes that are mass assignable. diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index eb46cfb..e48fef6 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -14,13 +14,13 @@ return new class extends Migration public function up() { Schema::create('users', function (Blueprint $table) { - $table->uuid('id')->primary(); + $table->ulid('id')->primary(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->string('reset_token')->nullable(); - $table->uuid('role_id')->nullable(); + $table->ulid('role_id')->nullable(); $table->rememberToken(); $table->timestamps(); }); diff --git a/database/migrations/2023_02_05_130618_create_settings_table.php b/database/migrations/2023_02_05_130618_create_settings_table.php index 7983a30..9a71b09 100644 --- a/database/migrations/2023_02_05_130618_create_settings_table.php +++ b/database/migrations/2023_02_05_130618_create_settings_table.php @@ -14,7 +14,7 @@ return new class extends Migration public function up() { Schema::create('settings', function (Blueprint $table) { - $table->uuid('id')->primary(); + $table->ulid('id')->primary(); $table->string('key'); $table->text('value'); $table->string('type'); diff --git a/database/migrations/2023_02_05_153325_create_roles_table.php b/database/migrations/2023_02_05_153325_create_roles_table.php index d12c9b0..a2fd1a3 100644 --- a/database/migrations/2023_02_05_153325_create_roles_table.php +++ b/database/migrations/2023_02_05_153325_create_roles_table.php @@ -14,13 +14,13 @@ return new class extends Migration public function up() { Schema::create('roles', function (Blueprint $table) { - $table->uuid('id')->primary(); + $table->ulid('id')->primary(); $table->string('name'); $table->timestamps(); $table->softDeletes(); - $table->uuid('created_by')->nullable(); - $table->uuid('updated_by')->nullable(); - $table->uuid('deleted_by')->nullable(); + $table->ulid('created_by')->nullable(); + $table->ulid('updated_by')->nullable(); + $table->ulid('deleted_by')->nullable(); }); } diff --git a/database/migrations/2023_02_05_153330_create_role_permissions_table.php b/database/migrations/2023_02_05_153330_create_role_permissions_table.php index 0a086b0..5bb7bf3 100644 --- a/database/migrations/2023_02_05_153330_create_role_permissions_table.php +++ b/database/migrations/2023_02_05_153330_create_role_permissions_table.php @@ -14,9 +14,9 @@ return new class extends Migration public function up() { Schema::create('role_permissions', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('role_id'); - $table->uuid('permission_id'); + $table->ulid('id')->primary(); + $table->ulid('role_id'); + $table->ulid('permission_id'); $table->timestamps(); $table->softDeletes(); }); diff --git a/database/seeders/PermissionSeeder.php b/database/seeders/PermissionSeeder.php index 4c6dc90..50d22e9 100644 --- a/database/seeders/PermissionSeeder.php +++ b/database/seeders/PermissionSeeder.php @@ -19,27 +19,27 @@ class PermissionSeeder extends Seeder public function run() { $permissions = [ - ['id' => Str::uuid(), 'label' => 'View Dashboard', 'name' => 'view-dashboard'], + ['id' => Str::ulid(), 'label' => 'View Dashboard', 'name' => 'view-dashboard'], - ['id' => Str::uuid(), 'label' => 'Create User', 'name' => 'create-user'], - ['id' => Str::uuid(), 'label' => 'Update User', 'name' => 'update-user'], - ['id' => Str::uuid(), 'label' => 'View User', 'name' => 'view-user'], - ['id' => Str::uuid(), 'label' => 'Delete User', 'name' => 'delete-user'], + ['id' => Str::ulid(), 'label' => 'Create User', 'name' => 'create-user'], + ['id' => Str::ulid(), 'label' => 'Update User', 'name' => 'update-user'], + ['id' => Str::ulid(), 'label' => 'View User', 'name' => 'view-user'], + ['id' => Str::ulid(), 'label' => 'Delete User', 'name' => 'delete-user'], - ['id' => Str::uuid(), 'label' => 'Create Role', 'name' => 'create-role'], - ['id' => Str::uuid(), 'label' => 'Update Role', 'name' => 'update-role'], - ['id' => Str::uuid(), 'label' => 'View Role', 'name' => 'view-role'], - ['id' => Str::uuid(), 'label' => 'Delete Role', 'name' => 'delete-role'], + ['id' => Str::ulid(), 'label' => 'Create Role', 'name' => 'create-role'], + ['id' => Str::ulid(), 'label' => 'Update Role', 'name' => 'update-role'], + ['id' => Str::ulid(), 'label' => 'View Role', 'name' => 'view-role'], + ['id' => Str::ulid(), 'label' => 'Delete Role', 'name' => 'delete-role'], ]; - foreach($permissions as $permission) { + foreach ($permissions as $permission) { Permission::insert($permission); } $role = Role::create(['name' => 'admin']); $permissions = Permission::all(); - foreach($permissions as $permission) { + foreach ($permissions as $permission) { $role->rolePermissions()->create(['permission_id' => $permission->id]); } @@ -56,8 +56,7 @@ class PermissionSeeder extends Seeder 'role_id' => $role->id, ]); - $setting = [ - ]; + $setting = []; Setting::insert($setting); }