migrate to ulid

v1
Aji Kamaludin 1 year ago
parent 3327637eeb
commit 1840e5ff47
No known key found for this signature in database
GPG Key ID: 19058F67F0083AD3

@ -1,4 +1,4 @@
APP_NAME='Template App' APP_NAME='App Name'
APP_ENV=local APP_ENV=local
APP_KEY= APP_KEY=
APP_DEBUG=true APP_DEBUG=true

@ -32,8 +32,13 @@ RUN apt-get update && apt-get dist-upgrade -y && \
# Clear cache # Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/* RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions # 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 # 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 # Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

@ -41,7 +41,7 @@ class RoleController extends Controller
$request->validate([ $request->validate([
'name' => 'string|required|max:255', 'name' => 'string|required|max:255',
'permissions' => 'array|required', 'permissions' => 'array|required',
'permissions.*.id' => 'uuid|required|exists:permissions,id', 'permissions.*.id' => 'ulid|required|exists:permissions,id',
]); ]);
DB::beginTransaction(); DB::beginTransaction();
@ -71,7 +71,7 @@ class RoleController extends Controller
$request->validate([ $request->validate([
'name' => 'string|required|max:255', 'name' => 'string|required|max:255',
'permissions' => 'array|required', 'permissions' => 'array|required',
'permissions.*.id' => 'uuid|required|exists:permissions,id', 'permissions.*.id' => 'ulid|required|exists:permissions,id',
]); ]);
if ($role->flag == 1) { if ($role->flag == 1) {

@ -30,7 +30,7 @@ class UserController extends Controller
'name' => 'required|string|max:255', 'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email', 'email' => 'required|email|unique:users,email',
'password' => 'required|string|max:255', 'password' => 'required|string|max:255',
'role_id' => 'required|uuid|exists:roles,id', 'role_id' => 'required|ulid|exists:roles,id',
]); ]);
User::create([ User::create([
@ -48,13 +48,13 @@ class UserController extends Controller
{ {
$request->validate([ $request->validate([
'name' => 'required|string|max:255', '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', 'password' => 'nullable|string|max:255',
]); ]);
if ($user->role != null) { if ($user->role != null) {
$request->validate([ $request->validate([
'role_id' => 'required|uuid|exists:roles,id', 'role_id' => 'required|ulid|exists:roles,id',
]); ]);
} }

@ -4,14 +4,14 @@ namespace App\Models;
use App\Models\Traits\CascadeSoftDeletes; use App\Models\Traits\CascadeSoftDeletes;
use App\Models\Traits\UserTrackable; 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\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model as BaseModel; use Illuminate\Database\Eloquent\Model as BaseModel;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class Model extends BaseModel class Model extends BaseModel
{ {
use HasFactory, HasUuids, UserTrackable, SoftDeletes, CascadeSoftDeletes; use HasFactory, HasUlids, UserTrackable, SoftDeletes, CascadeSoftDeletes;
public $cascadeDeletes = []; public $cascadeDeletes = [];
} }

@ -2,13 +2,13 @@
namespace App\Models; 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\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class Permission extends Model class Permission extends Model
{ {
use HasFactory, HasUuids; use HasFactory, HasUlids;
protected $fillable = [ protected $fillable = [
'name', 'name',

@ -2,14 +2,14 @@
namespace App\Models; 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\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class RolePermission extends Model class RolePermission extends Model
{ {
use HasFactory, SoftDeletes, HasUuids; use HasFactory, SoftDeletes, HasUlids;
protected $fillable = [ protected $fillable = [
'role_id', 'role_id',

@ -2,14 +2,14 @@
namespace App\Models; 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\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class Setting extends Model class Setting extends Model
{ {
use HasFactory, SoftDeletes, HasUuids; use HasFactory, SoftDeletes, HasUlids;
protected $fillable = [ protected $fillable = [
'key', 'key',

@ -4,7 +4,7 @@ namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail; // 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\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
@ -12,7 +12,7 @@ use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable class User extends Authenticatable
{ {
use HasApiTokens, HasFactory, Notifiable, HasUuids; use HasApiTokens, HasFactory, Notifiable, HasUlids;
/** /**
* The attributes that are mass assignable. * The attributes that are mass assignable.

@ -14,13 +14,13 @@ return new class extends Migration
public function up() public function up()
{ {
Schema::create('users', function (Blueprint $table) { Schema::create('users', function (Blueprint $table) {
$table->uuid('id')->primary(); $table->ulid('id')->primary();
$table->string('name'); $table->string('name');
$table->string('email')->unique(); $table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable(); $table->timestamp('email_verified_at')->nullable();
$table->string('password'); $table->string('password');
$table->string('reset_token')->nullable(); $table->string('reset_token')->nullable();
$table->uuid('role_id')->nullable(); $table->ulid('role_id')->nullable();
$table->rememberToken(); $table->rememberToken();
$table->timestamps(); $table->timestamps();
}); });

@ -14,7 +14,7 @@ return new class extends Migration
public function up() public function up()
{ {
Schema::create('settings', function (Blueprint $table) { Schema::create('settings', function (Blueprint $table) {
$table->uuid('id')->primary(); $table->ulid('id')->primary();
$table->string('key'); $table->string('key');
$table->text('value'); $table->text('value');
$table->string('type'); $table->string('type');

@ -14,13 +14,13 @@ return new class extends Migration
public function up() public function up()
{ {
Schema::create('roles', function (Blueprint $table) { Schema::create('roles', function (Blueprint $table) {
$table->uuid('id')->primary(); $table->ulid('id')->primary();
$table->string('name'); $table->string('name');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();
$table->uuid('created_by')->nullable(); $table->ulid('created_by')->nullable();
$table->uuid('updated_by')->nullable(); $table->ulid('updated_by')->nullable();
$table->uuid('deleted_by')->nullable(); $table->ulid('deleted_by')->nullable();
}); });
} }

@ -14,9 +14,9 @@ return new class extends Migration
public function up() public function up()
{ {
Schema::create('role_permissions', function (Blueprint $table) { Schema::create('role_permissions', function (Blueprint $table) {
$table->uuid('id')->primary(); $table->ulid('id')->primary();
$table->uuid('role_id'); $table->ulid('role_id');
$table->uuid('permission_id'); $table->ulid('permission_id');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();
}); });

@ -19,27 +19,27 @@ class PermissionSeeder extends Seeder
public function run() public function run()
{ {
$permissions = [ $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::ulid(), 'label' => 'Create User', 'name' => 'create-user'],
['id' => Str::uuid(), 'label' => 'Update User', 'name' => 'update-user'], ['id' => Str::ulid(), 'label' => 'Update User', 'name' => 'update-user'],
['id' => Str::uuid(), 'label' => 'View User', 'name' => 'view-user'], ['id' => Str::ulid(), 'label' => 'View User', 'name' => 'view-user'],
['id' => Str::uuid(), 'label' => 'Delete User', 'name' => 'delete-user'], ['id' => Str::ulid(), 'label' => 'Delete User', 'name' => 'delete-user'],
['id' => Str::uuid(), 'label' => 'Create Role', 'name' => 'create-role'], ['id' => Str::ulid(), 'label' => 'Create Role', 'name' => 'create-role'],
['id' => Str::uuid(), 'label' => 'Update Role', 'name' => 'update-role'], ['id' => Str::ulid(), 'label' => 'Update Role', 'name' => 'update-role'],
['id' => Str::uuid(), 'label' => 'View Role', 'name' => 'view-role'], ['id' => Str::ulid(), 'label' => 'View Role', 'name' => 'view-role'],
['id' => Str::uuid(), 'label' => 'Delete Role', 'name' => 'delete-role'], ['id' => Str::ulid(), 'label' => 'Delete Role', 'name' => 'delete-role'],
]; ];
foreach($permissions as $permission) { foreach ($permissions as $permission) {
Permission::insert($permission); Permission::insert($permission);
} }
$role = Role::create(['name' => 'admin']); $role = Role::create(['name' => 'admin']);
$permissions = Permission::all(); $permissions = Permission::all();
foreach($permissions as $permission) { foreach ($permissions as $permission) {
$role->rolePermissions()->create(['permission_id' => $permission->id]); $role->rolePermissions()->create(['permission_id' => $permission->id]);
} }
@ -56,8 +56,7 @@ class PermissionSeeder extends Seeder
'role_id' => $role->id, 'role_id' => $role->id,
]); ]);
$setting = [ $setting = [];
];
Setting::insert($setting); Setting::insert($setting);
} }

Loading…
Cancel
Save