Merge branch 'refs/heads/master' into feature/new-countries
All checks were successful
/ deploy-job (push) Successful in 0s
All checks were successful
/ deploy-job (push) Successful in 0s
# Conflicts: # src/Command/Migrate.php # templates/product.html.twig # templates/productList.html.twig
This commit is contained in:
@@ -112,7 +112,7 @@ class Migrate extends Command
|
||||
'productsUrl' => 'https://uk.ryobitools.eu/api/product-listing/get-products',
|
||||
'cultureCode' => 'en-GB',
|
||||
'currency' => 'GBP',
|
||||
'locale' => 'en',
|
||||
'locale' => 'uk',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]
|
||||
@@ -154,6 +154,30 @@ class Migrate extends Command
|
||||
]
|
||||
);
|
||||
}
|
||||
if (Capsule::schema()->hasTable('countries') && !Country::where('countryName', 'Poland')->exists()) {
|
||||
$id = Capsule::table('countries')->insertGetId(
|
||||
[
|
||||
'countryName' => 'Poland',
|
||||
'productsUrl' => 'https://pl.ryobitools.eu/api/product-listing/get-products',
|
||||
'cultureCode' => 'pl-PL',
|
||||
'currency' => 'PLN',
|
||||
'locale' => 'pl',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
}
|
||||
if (Capsule::schema()->hasTable('countries') && !Country::where('countryName', 'UK')->exists()) {
|
||||
Capsule::table('countries')->insert([
|
||||
'countryName' => 'UK',
|
||||
'productsUrl' => 'https://uk.ryobitools.eu/api/product-listing/get-products',
|
||||
'cultureCode' => 'en-GB',
|
||||
'currency' => 'GBP',
|
||||
'locale' => 'uk',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
if (!Capsule::schema()->hasColumn('products', 'country_id')) {
|
||||
Capsule::schema()->table('products', function (Blueprint $table) use ($id) {
|
||||
@@ -211,15 +235,78 @@ class Migrate extends Command
|
||||
$table->date('lastSeen')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
if (!Capsule::schema()->hasColumn('products', 'stock')) {
|
||||
Capsule::schema()->table('products', function (Blueprint $table) {
|
||||
$table->integer('stock')->nullable();
|
||||
});
|
||||
}
|
||||
if (!Capsule::schema()->hasColumn('products', 'promotions')) {
|
||||
Capsule::schema()->table('products', function (Blueprint $table) {
|
||||
$table->json('promotions')->nullable();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public function index(): void
|
||||
{
|
||||
if (!count(Capsule::select('SELECT name FROM sqlite_master WHERE type = "index" and name = "products_skuid_country_id_unique"'))) {
|
||||
if (!$this->hasIndex('products_skuid_country_id_unique')) {
|
||||
Capsule::schema()->table('products', function (Blueprint $table) {
|
||||
$table->integer('skuID')->unique(false)->change();
|
||||
if ($this->hasIndex('products_skuid_unique')) {
|
||||
$table->integer('skuID')->unique(false)->change();
|
||||
}
|
||||
$table->unique(['skuID', 'country_id']);
|
||||
});
|
||||
}
|
||||
|
||||
if (!$this->hasIndex('prices_product_id_index')) {
|
||||
Capsule::schema()->table('prices', function (Blueprint $table) {
|
||||
$table->index('product_id');
|
||||
});
|
||||
}
|
||||
|
||||
if (!$this->hasIndex('products_id_index')) {
|
||||
Capsule::schema()->table('products', function (Blueprint $table) {
|
||||
$table->index('id');
|
||||
});
|
||||
}
|
||||
|
||||
if (!$this->hasIndex('stocks_product_id_stock_index')) {
|
||||
Capsule::schema()->table('stocks', function (Blueprint $table) {
|
||||
$table->index(['product_id', 'stock']);
|
||||
});
|
||||
}
|
||||
|
||||
if (!$this->isFK('products', 'id', 'stocks', 'product_id')) {
|
||||
Capsule::schema()->table('products', function (Blueprint $table) {
|
||||
$table->foreign('id')->references('product_id')->on('stocks');
|
||||
});
|
||||
}
|
||||
|
||||
if (!$this->isFK('products', 'id', 'prices', 'product_id')) {
|
||||
Capsule::schema()->table('products', function (Blueprint $table) {
|
||||
$table->foreign('id')->references('product_id')->on('prices');
|
||||
});
|
||||
}
|
||||
if (!$this->isFK('products', 'country_id', 'countries', 'id')) {
|
||||
Capsule::schema()->table('products', function (Blueprint $table) {
|
||||
$table->foreign('country_id')->references('id')->on('countries');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private function isFK(string $table, string $column, string $fTable, string $fColumn): bool
|
||||
{
|
||||
$fkColumns = Capsule::schema()->getForeignKeys($table);
|
||||
|
||||
return !empty(array_filter($fkColumns, fn($fkColumn) => ($fkColumn['foreign_table'] == $fTable &&
|
||||
in_array($fColumn, $fkColumn['foreign_columns']) &&
|
||||
in_array($column, $fkColumn['columns']))
|
||||
));
|
||||
}
|
||||
|
||||
private function hasIndex(string $indexName): bool
|
||||
{
|
||||
return !!count(Capsule::select('SELECT name FROM sqlite_master WHERE type = "index" and name = ?', [$indexName]));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user