diff --git a/app/Console/Commands/UpdateMassiveCommand.php b/app/Console/Commands/UpdateMassiveCommand.php new file mode 100755 index 0000000..7350fa9 --- /dev/null +++ b/app/Console/Commands/UpdateMassiveCommand.php @@ -0,0 +1,31 @@ +handle(); + } +} diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php new file mode 100755 index 0000000..9eaa72e --- /dev/null +++ b/app/Models/Transaction.php @@ -0,0 +1,38 @@ + + */ + protected $fillable = [ + 'value', + 'date', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'date' => 'datetime', + ]; +} diff --git a/app/Tasks/UpdateMassiveTask.php b/app/Tasks/UpdateMassiveTask.php new file mode 100755 index 0000000..27524fb --- /dev/null +++ b/app/Tasks/UpdateMassiveTask.php @@ -0,0 +1,29 @@ +where('id', '>', 0) + ->chunkById(10, function ($transactions) { + + foreach ($transactions as $transaction) { + Transaction::query() + ->where('id', '=', $transaction->id) + ->update([ + 'date' => Carbon::now(), + 'value' => 1, + ]); + } + }); + } +} diff --git a/database/factories/TransactionFactory.php b/database/factories/TransactionFactory.php new file mode 100755 index 0000000..5e07dbd --- /dev/null +++ b/database/factories/TransactionFactory.php @@ -0,0 +1,24 @@ + + */ +class TransactionFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'date' => fake()->dateTimeBetween('-30 days'), + 'value' => fake()->numerify('####.##') + ]; + } +} diff --git a/database/migrations/2023_07_07_150557_create_transactions_table.php b/database/migrations/2023_07_07_150557_create_transactions_table.php index c48b893..2335252 100755 --- a/database/migrations/2023_07_07_150557_create_transactions_table.php +++ b/database/migrations/2023_07_07_150557_create_transactions_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::create('transactions', function (Blueprint $table) { $table->id(); $table->decimal('value', 12, 2); - $table->timestamps('date'); + $table->timestamp('date'); $table->timestamps(); }); } diff --git a/database/migrations/2023_07_07_153147_create_jobs_table.php b/database/migrations/2023_07_07_153147_create_jobs_table.php new file mode 100755 index 0000000..6098d9b --- /dev/null +++ b/database/migrations/2023_07_07_153147_create_jobs_table.php @@ -0,0 +1,32 @@ +bigIncrements('id'); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jobs'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index a9f4519..e885809 100755 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -12,6 +12,7 @@ class DatabaseSeeder extends Seeder */ public function run(): void { + $this->call(TransactionSeeder::class); // \App\Models\User::factory(10)->create(); // \App\Models\User::factory()->create([ diff --git a/database/seeders/TransactionSeeder.php b/database/seeders/TransactionSeeder.php new file mode 100755 index 0000000..8a1c051 --- /dev/null +++ b/database/seeders/TransactionSeeder.php @@ -0,0 +1,40 @@ +create(); + } + + if ($type === 2) { + + /** + * insert multiple + * 1000 - Database\Seeders\TransactionSeeder ......... 96.11 ms DONE + * 10000 - Database\Seeders\TransactionSeeder ........ 887.48 ms DONE + */ + $transactions = Transaction::factory($count)->make(); + Transaction::query()->insert($transactions->toArray()); + } + } +}