Files
admin/database/migrations/2024_05_31_080315_v1.1.0.php
Husanjonazamov e0f1989655 classify admin
2026-02-24 12:52:01 +05:00

240 lines
9.8 KiB
PHP

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/
public function up(): void {
if (!Schema::hasTable('blogs')) {
Schema::create('blogs', static function (Blueprint $table) {
$table->id();
$table->string('title', 512);
$table->string('slug', 512);
$table->text('description')->nullable();
$table->string('image', 512);
$table->string('tags')->nullable();
$table->integer('views')->default(0);
$table->timestamps();
});
}
if (!Schema::hasTable('category_translations')) {
Schema::create('category_translations', static function (Blueprint $table) {
$table->id();
$table->foreignId('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->foreignId('language_id')->references('id')->on('languages')->onDelete('cascade');
$table->string('name', 125);
$table->timestamps();
$table->unique(['category_id', 'language_id']);
});
}
if (!Schema::hasTable('countries')) {
Schema::create('countries', static function (Blueprint $table) {
$table->id();
$table->string('name', 100);
$table->char('iso3', 3)->nullable();
$table->char('numeric_code', 3)->nullable();
$table->char('iso2', 2)->nullable();
$table->string('phonecode', 255)->nullable();
$table->string('capital', 255)->nullable();
$table->string('currency', 255)->nullable();
$table->string('currency_name', 255)->nullable();
$table->string('currency_symbol', 255)->nullable();
$table->string('tld', 255)->nullable();
$table->string('native', 255)->nullable();
$table->string('region', 255)->nullable();
$table->integer('region_id')->nullable();
$table->string('subregion', 255)->nullable();
$table->integer('subregion_id')->nullable();
$table->string('nationality', 255)->nullable();
$table->text('timezones')->nullable();
$table->text('translations')->nullable();
$table->decimal('latitude')->nullable();
$table->decimal('longitude')->nullable();
$table->string('emoji', 191)->nullable();
$table->string('emojiU', 191)->nullable();
$table->boolean('flag')->nullable();
$table->string('wikiDataId', 255)->nullable();
$table->timestamps();
});
}
if (!Schema::hasTable('states')) {
Schema::create('states', static function (Blueprint $table) {
$table->id();
$table->string('name', 255);
$table->foreignId('country_id')->references('id')->on('countries')->onDelete('cascade');
$table->char('state_code', 2);
$table->string('fips_code', 255)->nullable();
$table->string('iso2', 255)->nullable();
$table->string('type', 191)->nullable();
$table->decimal('latitude')->nullable();
$table->decimal('longitude')->nullable();
$table->boolean('flag')->nullable();
$table->string('wikiDataId', 255)->nullable();
$table->timestamps();
});
}
if (!Schema::hasTable('cities')) {
Schema::create('cities', static function (Blueprint $table) {
$table->id();
$table->string('name', 255);
$table->foreignId('state_id')->references('id')->on('states')->onDelete('cascade');
$table->string('state_code', 255);
$table->foreignId('country_id')->references('id')->on('countries')->onDelete('cascade');
$table->char('country_code', 2);
$table->decimal('latitude')->nullable();
$table->decimal('longitude')->nullable();
$table->boolean('flag')->nullable();
$table->string('wikiDataId', 255)->nullable();
$table->timestamps();
});
}
if (!Schema::hasTable('faqs')) {
Schema::create('faqs', static function (Blueprint $table) {
$table->id();
$table->string('question');
$table->string('answer');
$table->timestamps();
});
}
if (!Schema::hasTable('social_logins')) {
Schema::create('social_logins', static function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string('firebase_id', 512);
$table->enum('type', ['google', 'email', 'phone']);
$table->timestamps();
$table->unique(['user_id', 'type']);
});
}
if (!Schema::hasTable('areas')) {
Schema::create('areas', static function (Blueprint $table) {
$table->id();
$table->string('name', 255);
$table->foreignId('city_id')->references('id')->on('cities')->onDelete('cascade');
$table->foreignId('state_id')->references('id')->on('states')->onDelete('cascade');
$table->string('state_code', 255)->nullable();
$table->foreignId('country_id')->references('id')->on('countries')->onDelete('cascade');
$table->timestamps();
});
}
Schema::table('sliders', static function (Blueprint $table) {
if (!Schema::hasColumn('sliders', 'model_id') && !Schema::hasColumn('sliders', 'model_type')) {
$table->nullableMorphs('model');
}
});
Schema::table('user_purchased_packages', static function (Blueprint $table) {
if (!Schema::hasColumn('user_purchased_packages', 'payment_transactions_id')) {
$table->foreignId('payment_transactions_id')->after('used_limit')->nullable()->references('id')->on('payment_transactions')->onDelete('cascade');
}
});
Schema::table('users', static function (Blueprint $table) {
if (!Schema::hasColumn('users', 'country_code')) {
$table->string('country_code')->nullable();
}
});
Schema::table('payment_transactions', static function (Blueprint $table) {
if (Schema::hasColumn('payment_transactions', 'payment_id')) {
$table->dropColumn('payment_id');
}
if (Schema::hasColumn('payment_transactions', 'payment_signature')) {
$table->dropColumn('payment_signature');
}
});
Schema::table('items', static function (Blueprint $table) {
if (!Schema::hasColumn('items', 'area_id')) {
$table->foreignId('area_id')->after('country')->nullable()->references('id')->on('areas')->onDelete('restrict');
}
if (!Schema::hasColumn('items', 'slug')) {
$table->string('slug', 512)->after('name');
}
if (!Schema::hasColumn('items', 'rejected_reason')) {
$table->string('rejected_reason')->after('status')->nullable();
}
});
Schema::table('categories', static function (Blueprint $table) {
if (!Schema::hasColumn('categories', 'slug')) {
$table->string('slug', 512);
}
});
Schema::table('languages', static function (Blueprint $table) {
if (!Schema::hasColumn('languages', 'slug')) {
$table->string('slug', 512)->after('name');
}
if (!Schema::hasColumn('languages', 'web_file')) {
$table->string('web_file')->after('panel_file');
}
});
}
/**
* Reverse the migrations.
*/
public
function down(): void {
Schema::dropIfExists('blogs');
Schema::dropIfExists('category_translations');
Schema::dropIfExists('faqs');
Schema::dropIfExists('social_logins');
Schema::dropIfExists('areas');
Schema::table('sliders', static function (Blueprint $table) {
$table->dropMorphs('model');
});
Schema::table('user_purchased_packages', static function (Blueprint $table) {
$table->dropColumn('payment_transactions_id');
});
Schema::table('users', static function (Blueprint $table) {
$table->dropColumn('country_code');
});
Schema::table('payment_transactions', static function (Blueprint $table) {
$table->string('payment_id')->nullable();
$table->string('payment_signature')->nullable();
});
Schema::table('languages', static function (Blueprint $table) {
$table->dropColumn('web_file');
});
Schema::table('items', static function (Blueprint $table) {
$table->dropColumn('area_id');
$table->dropColumn('slug');
});
Schema::table('categories', static function (Blueprint $table) {
$table->dropColumn('slug');
});
Schema::table('languages', static function (Blueprint $table) {
$table->dropColumn('web_file');
});
}
};