From e2e6c2b6f81e1f4fa8efc128b2ff8677f7232428 Mon Sep 17 00:00:00 2001 From: ricky rx Date: Tue, 11 Jun 2024 10:51:38 +0700 Subject: [PATCH] feat: video_update with file_size information --- app/Models/VideoUpdate.php | 21 ++++++++++++--- ..._add_col_total_size_kb_to_video_update.php | 26 +++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 database/migrations/2024_06_11_095119_add_col_total_size_kb_to_video_update.php diff --git a/app/Models/VideoUpdate.php b/app/Models/VideoUpdate.php index 1430bdb..fe42082 100644 --- a/app/Models/VideoUpdate.php +++ b/app/Models/VideoUpdate.php @@ -24,7 +24,7 @@ class VideoUpdate extends Model { protected $table = 'video_updates'; protected $hidden = ['file']; - protected $appends = ['file_url']; + protected $appends = ['file_url', 'file_size_mb']; // --------------------------------------------------------------------------------------- // -- RELATED TO SCOPE @@ -40,6 +40,16 @@ class VideoUpdate extends Model { // -- END RELATED TO GET DATA // --------------------------------------------------------------------------------------- + // --------------------------------------------------------------------------------------- + // -- RELATED TO ATTRIBUTE + protected function fileSizeMb(): Attribute { + return Attribute::make( + fn() => $this->file_size_kb != null ? round($this->file_size_kb / 1024, 2) : null + ); + } + // -- END RELATED TO ATTRIBUTE + // --------------------------------------------------------------------------------------- + // --------------------------------------------------------------------------------------- // -- RELATED TO MODIFICATION DATA FROM REQUEST public static function upsertFromRequest(Request $request) { @@ -54,9 +64,13 @@ class VideoUpdate extends Model { $delOldDbFileLocation = ''; $newDbFileLocation = ''; + $newFileSizeKb = 0; try { - // save photo - if($request->file) $newDbFileLocation = self::saveFile($request->file)['db_url']; + // save video to storage & get file size + if($request->file) { + $newDbFileLocation = self::saveFile($request->file)['db_url']; + $newFileSizeKb = round($request->file('file')->getSize() / 1024, 2); + } // try to upsert data DB::beginTransaction(); @@ -68,6 +82,7 @@ class VideoUpdate extends Model { if($newDbFileLocation) { if($videoUpdate->file) $delOldDbFileLocation = $videoUpdate->file; $videoUpdate->file = $newDbFileLocation; + $videoUpdate->file_size_kb = $newFileSizeKb; } $videoUpdate->file_name = $request->file_name; diff --git a/database/migrations/2024_06_11_095119_add_col_total_size_kb_to_video_update.php b/database/migrations/2024_06_11_095119_add_col_total_size_kb_to_video_update.php new file mode 100644 index 0000000..4674d5c --- /dev/null +++ b/database/migrations/2024_06_11_095119_add_col_total_size_kb_to_video_update.php @@ -0,0 +1,26 @@ +double('file_size_kb')->default(0); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void { + Schema::table('video_updates', function(Blueprint $table) { + $table->dropColumn('file_size_kb'); + }); + } +};