From 2a4e07c7c014d0a8daff5d9a708ef1825dc11e28 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Wed, 12 Nov 2025 20:40:35 +0700 Subject: [PATCH] feat(point record): membuat model, migrasi dan enum untuk poin record --- app/Enums/PointRecordType.php | 30 ++++++++++++++++ app/Models/PointRecord.php | 29 +++++++++++++++ ...1_12_190102_create_point_records_table.php | 35 +++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 app/Enums/PointRecordType.php create mode 100644 app/Models/PointRecord.php create mode 100644 database/migrations/2025_11_12_190102_create_point_records_table.php diff --git a/app/Enums/PointRecordType.php b/app/Enums/PointRecordType.php new file mode 100644 index 0000000..5bd2217 --- /dev/null +++ b/app/Enums/PointRecordType.php @@ -0,0 +1,30 @@ + 'Tier', + self::REWARD => 'Hadiah', + }; + } + + public function color() + { + return match ($this) { + self::TIER => 'emerald', + self::REWARD => 'blue', + }; + } +} diff --git a/app/Models/PointRecord.php b/app/Models/PointRecord.php new file mode 100644 index 0000000..4ff6372 --- /dev/null +++ b/app/Models/PointRecord.php @@ -0,0 +1,29 @@ + 'int', + 'type' => PointRecordType::class, + 'is_addition' => 'boolean', + ]; + } + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } +} diff --git a/database/migrations/2025_11_12_190102_create_point_records_table.php b/database/migrations/2025_11_12_190102_create_point_records_table.php new file mode 100644 index 0000000..606c039 --- /dev/null +++ b/database/migrations/2025_11_12_190102_create_point_records_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignId('user_id')->constrained()->cascadeOnDelete(); + $table->unsignedBigInteger('change'); + $table->enum('type', [PointRecordType::values()])->comment(PointRecordType::comment()); + $table->string('description', 50); + $table->boolean('is_addition'); + $table->timestamp('created_at')->useCurrent(); + $table->timestamp('updated_at')->nullable()->useCurrentOnUpdate(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('point_records'); + } +};