ldc-dam/database/migrations/2022_07_20_135941_media_integers.php
2022-07-29 13:12:34 +02:00

88 lines
3.7 KiB
PHP

<?php
use App\Models\Media;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
// * Normalize values
Media::withTrashed()->get()->map(function (Media $media) {
$media->largeur = intval($media->largeur);
$media->hauteur = intval($media->hauteur);
$media->resolution = intval($media->resolution);
$media->largeur_mm = floatval($media->largeur_mm);
$media->hauteur_mm = floatval($media->hauteur_mm);
switch (true) {
case strpos(strval($media->getRawOriginal('taille')), 'octet') !== false:
$media->taille = intval(trim(
str_replace('octet', '', strval($media->getRawOriginal('taille')))
));
break;
case strpos(strval($media->getRawOriginal('taille')), 'Ko') !== false:
$media->taille = ceil(intval(trim(
str_replace('Ko', '', strval($media->getRawOriginal('taille')))
)) * 1024);
break;
case strpos(strval($media->getRawOriginal('taille')), 'Mo') !== false:
$media->taille = ceil(intval(trim(
str_replace('Mo', '', strval($media->getRawOriginal('taille')))
)) * 1024 * 1024);
break;
case strpos(strval($media->getRawOriginal('taille')), 'Go') !== false:
$media->taille = ceil(intval(trim(
str_replace('Go', '', strval($media->getRawOriginal('taille')))
)) * 1024 * 1024 * 1024);
break;
default:
if (
strlen(trim(strval($media->getRawOriginal('taille')))) and
!is_numeric(trim(strval($media->getRawOriginal('taille'))))
) {
throw new \RuntimeException('Failed to convert size');
}
} //end switch
$media->timestamps = false;
$media->saveQuietly();
});
Schema::table('media', function (Blueprint $table) {
$table->unsignedSmallInteger('largeur')->default(0)->comment('Largeur en pixels')->change();
$table->unsignedSmallInteger('hauteur')->default(0)->comment('Hauteur en pixels')->change();
$table->unsignedFloat('largeur_mm')->default(0)->comment('Largeur en mm')->change();
$table->unsignedFloat('hauteur_mm')->default(0)->comment('Hauteur en mm')->change();
$table->unsignedSmallInteger('resolution')->default(0)
->comment('Resolution en largeur uniquement')->change();
$table->unsignedInteger('taille')->default(0)
->comment('Taille du media en octets')->change();
$table->string('duree', 8)->nullable()
->comment('Durée du media uniquement pour vidéo et audio')->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('media', function (Blueprint $table) {
$table->string('largeur', 100)->change();
$table->string('hauteur', 100)->change();
$table->string('largeur_mm', 100)->change();
$table->string('hauteur_mm', 100)->change();
$table->string('resolution', 100)->change();
$table->string('taille', 100)->change();
$table->string('duree', 100)->change();
});
}
};