addOption(self::RECREATE_OPTION, null, InputOption::VALUE_OPTIONAL, 'Recreate database file event if exist and has data.'); } public function execute(InputInterface $input, OutputInterface $output): int { if (true === $input->hasOption(self::RECREATE_OPTION)) { unlink(__DIR__ . '/../../database.sqlite'); //sleep(5); } touch(__DIR__ . '/../../database.sqlite'); $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'sqlite', 'database' => __DIR__ . '/../../database.sqlite', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $this->createProductsTable(); $this->createPricesTable(); $this->createStocksTable(); return Command::SUCCESS; } public function createProductsTable(): void { if (!Capsule::schema()->hasTable('products')) { Capsule::schema()->create('products', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->integer('skuID')->unique(); $table->integer('availableQuantity'); $table->json('categories'); $table->string('image'); $table->string('subTitle'); $table->string('variantCode'); $table->string('modelCode'); $table->string('url'); $table->boolean('starred')->default(false); $table->timestamps(); }); } } public function createPricesTable(): void { if (!Capsule::schema()->hasTable('prices')) { Capsule::schema()->create('prices', function (Blueprint $table) { $table->increments('id'); $table->foreignId('product_id'); $table->float('price'); $table->float('productStandardPrice'); $table->float('lowestProductPrice30Days'); $table->timestamps(); }); } } public function createStocksTable(): void { if (!Capsule::schema()->hasTable('stocks')) { Capsule::schema()->create('stocks', function (Blueprint $table) { $table->increments('id'); $table->foreignId('product_id'); $table->integer('availableQuantity'); $table->integer('stock'); $table->boolean('isInStock'); $table->boolean('previouslyHadStock'); $table->boolean('isNew'); $table->boolean('isComingSoon'); $table->boolean('isOnSale'); $table->timestamps(); }); } } }