Merge branch 'main' into epic/kan-3
This commit is contained in:
@@ -28,6 +28,9 @@ class UserFactory extends Factory
|
||||
return [
|
||||
'name' => fake()->name(),
|
||||
'email' => fake()->unique()->safeEmail(),
|
||||
'avatar_path' => null,
|
||||
'avatar_color' => null,
|
||||
'avatar_is_generated' => false,
|
||||
'email_verified_at' => now(),
|
||||
'must_change_password_on_next_login' => false,
|
||||
'password' => static::$password ??= Hash::make('password'),
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table): void {
|
||||
$table->string('avatar_path')
|
||||
->nullable()
|
||||
->after('password');
|
||||
$table->string('avatar_color', 7)
|
||||
->nullable()
|
||||
->after('avatar_path');
|
||||
$table->boolean('avatar_is_generated')
|
||||
->default(false)
|
||||
->after('avatar_color');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table): void {
|
||||
$table->dropColumn([
|
||||
'avatar_path',
|
||||
'avatar_color',
|
||||
'avatar_is_generated',
|
||||
]);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
use App\Actions\Users\UpdateUserAvatar;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
$avatars = app(UpdateUserAvatar::class);
|
||||
|
||||
User::query()
|
||||
->whereNull('avatar_path')
|
||||
->orderBy('id')
|
||||
->chunkById(100, function (Collection $users) use ($avatars): void {
|
||||
foreach ($users as $user) {
|
||||
$avatars->generate($user);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
$avatars = app(UpdateUserAvatar::class);
|
||||
|
||||
User::query()
|
||||
->where('avatar_is_generated', true)
|
||||
->whereNotNull('avatar_path')
|
||||
->orderBy('id')
|
||||
->chunkById(100, function (Collection $users) use ($avatars): void {
|
||||
foreach ($users as $user) {
|
||||
$avatars->delete($user);
|
||||
}
|
||||
});
|
||||
|
||||
User::query()
|
||||
->where('avatar_is_generated', true)
|
||||
->update([
|
||||
'avatar_path' => null,
|
||||
'avatar_color' => null,
|
||||
'avatar_is_generated' => false,
|
||||
]);
|
||||
}
|
||||
};
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Actions\Users\UpdateUserAvatar;
|
||||
use App\Enums\Permission;
|
||||
use App\Models\PermissionAssignment;
|
||||
use App\Models\User;
|
||||
@@ -9,6 +10,10 @@ use Illuminate\Database\Seeder;
|
||||
|
||||
class UserSeeder extends Seeder
|
||||
{
|
||||
public function __construct(
|
||||
private readonly UpdateUserAvatar $avatars,
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
@@ -18,6 +23,7 @@ class UserSeeder extends Seeder
|
||||
'name' => 'Admin User',
|
||||
'email' => 'admin@kanbangit.test',
|
||||
]);
|
||||
$this->avatars->generate($admin);
|
||||
|
||||
PermissionAssignment::factory()
|
||||
->forAssignee($admin)
|
||||
@@ -28,6 +34,7 @@ class UserSeeder extends Seeder
|
||||
'name' => 'Test User',
|
||||
'email' => 'test@example.com',
|
||||
]);
|
||||
$this->avatars->generate($testUser);
|
||||
|
||||
PermissionAssignment::factory()
|
||||
->forAssignee($testUser)
|
||||
@@ -35,6 +42,8 @@ class UserSeeder extends Seeder
|
||||
->permission(Permission::ProjectCreate)
|
||||
->create();
|
||||
|
||||
User::factory(8)->create();
|
||||
User::factory(8)
|
||||
->create()
|
||||
->each(fn (User $user) => $this->avatars->generate($user));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user