From 73315b7354f403fe4cebfdf89bf749a85d2c943c Mon Sep 17 00:00:00 2001 From: Leon Morival Date: Fri, 22 May 2026 12:43:30 +0200 Subject: [PATCH] feat: migrations --- .../0001_01_01_000000_create_users_table.php | 4 ++ ...6_05_15_111236_create_meal_posts_table.php | 2 + ...000_add_visibility_to_meal_posts_table.php | 26 ----------- ...d_daily_nutrition_goals_to_users_table.php | 30 ------------- ...26_05_17_171607_add_type_to_meal_posts.php | 28 ------------ ...102611_change_type_notifications_table.php | 45 +++++++++++++++++++ 6 files changed, 51 insertions(+), 84 deletions(-) delete mode 100644 database/migrations/2026_05_16_140000_add_visibility_to_meal_posts_table.php delete mode 100644 database/migrations/2026_05_16_150000_add_daily_nutrition_goals_to_users_table.php delete mode 100644 database/migrations/2026_05_17_171607_add_type_to_meal_posts.php create mode 100644 database/migrations/2026_05_22_102611_change_type_notifications_table.php diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index 23717d0..e811bd9 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -19,6 +19,10 @@ return new class extends Migration $table->string('password'); $table->text('bio')->nullable(); $table->string('avatar_url', 2048)->nullable(); + $table->unsignedInteger('daily_calorie_goal')->default(2000)->after('avatar_url'); + $table->decimal('daily_protein_goal', 8, 2)->default(120)->after('daily_calorie_goal'); + $table->decimal('daily_carbs_goal', 8, 2)->default(250)->after('daily_protein_goal'); + $table->decimal('daily_fats_goal', 8, 2)->default(70)->after('daily_carbs_goal'); $table->rememberToken(); $table->timestamps(); }); diff --git a/database/migrations/2026_05_15_111236_create_meal_posts_table.php b/database/migrations/2026_05_15_111236_create_meal_posts_table.php index 089b35d..eabab8c 100644 --- a/database/migrations/2026_05_15_111236_create_meal_posts_table.php +++ b/database/migrations/2026_05_15_111236_create_meal_posts_table.php @@ -18,6 +18,8 @@ return new class extends Migration $table->decimal('carbs', 8, 2)->nullable(); $table->decimal('fats', 8, 2)->nullable(); $table->string('title'); + $table->string('type')->default('breakfast'); + $table->string('visibility', 20)->default('private')->index(); $table->timestamp('eaten_at'); $table->timestamps(); $table->softDeletes(); diff --git a/database/migrations/2026_05_16_140000_add_visibility_to_meal_posts_table.php b/database/migrations/2026_05_16_140000_add_visibility_to_meal_posts_table.php deleted file mode 100644 index b1bd7f3..0000000 --- a/database/migrations/2026_05_16_140000_add_visibility_to_meal_posts_table.php +++ /dev/null @@ -1,26 +0,0 @@ -string('visibility', 20) - ->default('private') - ->index(); - }); - } - - public function down(): void - { - Schema::table('meal_posts', function (Blueprint $table): void { - $table->dropIndex(['visibility']); - $table->dropColumn('visibility'); - }); - } -}; diff --git a/database/migrations/2026_05_16_150000_add_daily_nutrition_goals_to_users_table.php b/database/migrations/2026_05_16_150000_add_daily_nutrition_goals_to_users_table.php deleted file mode 100644 index 3765ff4..0000000 --- a/database/migrations/2026_05_16_150000_add_daily_nutrition_goals_to_users_table.php +++ /dev/null @@ -1,30 +0,0 @@ -unsignedInteger('daily_calorie_goal')->default(2000)->after('avatar_url'); - $table->decimal('daily_protein_goal', 8, 2)->default(120)->after('daily_calorie_goal'); - $table->decimal('daily_carbs_goal', 8, 2)->default(250)->after('daily_protein_goal'); - $table->decimal('daily_fats_goal', 8, 2)->default(70)->after('daily_carbs_goal'); - }); - } - - public function down(): void - { - Schema::table('users', function (Blueprint $table): void { - $table->dropColumn([ - 'daily_calorie_goal', - 'daily_protein_goal', - 'daily_carbs_goal', - 'daily_fats_goal', - ]); - }); - } -}; diff --git a/database/migrations/2026_05_17_171607_add_type_to_meal_posts.php b/database/migrations/2026_05_17_171607_add_type_to_meal_posts.php deleted file mode 100644 index 8c942ee..0000000 --- a/database/migrations/2026_05_17_171607_add_type_to_meal_posts.php +++ /dev/null @@ -1,28 +0,0 @@ -string('type')->default('breakfast'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('meal_posts', function (Blueprint $table) { - $table->dropColumn('type'); - }); - } -}; diff --git a/database/migrations/2026_05_22_102611_change_type_notifications_table.php b/database/migrations/2026_05_22_102611_change_type_notifications_table.php new file mode 100644 index 0000000..dce95f0 --- /dev/null +++ b/database/migrations/2026_05_22_102611_change_type_notifications_table.php @@ -0,0 +1,45 @@ +getDriverName() !== 'pgsql') { + return; + } + + DB::statement('ALTER TABLE notifications ALTER COLUMN notifiable_id TYPE char(26) USING notifiable_id::text'); + DB::statement('ALTER TABLE notifications ALTER COLUMN data TYPE jsonb USING data::jsonb'); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + if (DB::connection()->getDriverName() !== 'pgsql') { + return; + } + + DB::statement('ALTER TABLE notifications ALTER COLUMN data TYPE text USING data::text'); + DB::statement(<<<'SQL' + DO $$ + BEGIN + IF NOT EXISTS ( + SELECT 1 + FROM notifications + WHERE notifiable_id !~ '^[0-9]+$' + ) THEN + ALTER TABLE notifications + ALTER COLUMN notifiable_id TYPE bigint USING notifiable_id::bigint; + END IF; + END $$; + SQL); + } +};