package installer
This commit is contained in:
95
app/Helpers/Installer/DatabaseManager.php
Executable file
95
app/Helpers/Installer/DatabaseManager.php
Executable file
@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
namespace App\Helpers\Installer;
|
||||
|
||||
use Exception;
|
||||
use Illuminate\Database\SQLiteConnection;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Symfony\Component\Console\Output\BufferedOutput;
|
||||
|
||||
class DatabaseManager
|
||||
{
|
||||
/**
|
||||
* Migrate and seed the database.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function migrateAndSeed()
|
||||
{
|
||||
$outputLog = new BufferedOutput;
|
||||
|
||||
$this->sqlite($outputLog);
|
||||
|
||||
return $this->migrate($outputLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the migration and call the seeder.
|
||||
*
|
||||
* @param \Symfony\Component\Console\Output\BufferedOutput $outputLog
|
||||
* @return array
|
||||
*/
|
||||
private function migrate(BufferedOutput $outputLog)
|
||||
{
|
||||
try {
|
||||
Artisan::call('migrate', ['--force'=> true], $outputLog);
|
||||
} catch (Exception $e) {
|
||||
return $this->response($e->getMessage(), 'error', $outputLog);
|
||||
}
|
||||
|
||||
return $this->seed($outputLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* Seed the database.
|
||||
*
|
||||
* @param \Symfony\Component\Console\Output\BufferedOutput $outputLog
|
||||
* @return array
|
||||
*/
|
||||
private function seed(BufferedOutput $outputLog)
|
||||
{
|
||||
try {
|
||||
Artisan::call('db:seed', ['--force' => true], $outputLog);
|
||||
} catch (Exception $e) {
|
||||
return $this->response($e->getMessage(), 'error', $outputLog);
|
||||
}
|
||||
|
||||
return $this->response(trans('installer_messages.final.finished'), 'success', $outputLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a formatted error messages.
|
||||
*
|
||||
* @param string $message
|
||||
* @param string $status
|
||||
* @param \Symfony\Component\Console\Output\BufferedOutput $outputLog
|
||||
* @return array
|
||||
*/
|
||||
private function response($message, $status, BufferedOutput $outputLog)
|
||||
{
|
||||
return [
|
||||
'status' => $status,
|
||||
'message' => $message,
|
||||
'dbOutputLog' => $outputLog->fetch(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check database type. If SQLite, then create the database file.
|
||||
*
|
||||
* @param \Symfony\Component\Console\Output\BufferedOutput $outputLog
|
||||
*/
|
||||
private function sqlite(BufferedOutput $outputLog)
|
||||
{
|
||||
if (DB::connection() instanceof SQLiteConnection) {
|
||||
$database = DB::connection()->getDatabaseName();
|
||||
if (! file_exists($database)) {
|
||||
touch($database);
|
||||
DB::reconnect(Config::get('database.default'));
|
||||
}
|
||||
$outputLog->write('Using SqlLite database: '.$database, 1);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user