Move migration base class entirely into the interface
This commit is contained in:
parent
3e89a53fc1
commit
d5fba47dc6
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Models\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateSettingsTable extends Migration
|
class CreateSettingsTable extends Migration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Models\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Models\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class RolesPermissionsTables extends Migration
|
class RolesPermissionsTables extends Migration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateAirlinesTable extends Migration
|
class CreateAirlinesTable extends Migration
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Interfaces\Migration;
|
||||||
use App\Models\Enums\AircraftState;
|
use App\Models\Enums\AircraftState;
|
||||||
use App\Models\Enums\AircraftStatus;
|
use App\Models\Enums\AircraftStatus;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateAircraftsTable extends Migration
|
class CreateAircraftsTable extends Migration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateFaresTable extends Migration
|
class CreateFaresTable extends Migration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateAirportsTable extends Migration
|
class CreateAirportsTable extends Migration
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Interfaces\Migration;
|
||||||
use App\Models\Enums\FlightType;
|
use App\Models\Enums\FlightType;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateFlightTables extends Migration
|
class CreateFlightTables extends Migration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Models\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateRanksTable extends Migration
|
class CreateRanksTable extends Migration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Interfaces\Migration;
|
||||||
use App\Models\Enums\FlightType;
|
use App\Models\Enums\FlightType;
|
||||||
use App\Models\Enums\PirepState;
|
use App\Models\Enums\PirepState;
|
||||||
use App\Models\Enums\PirepStatus;
|
use App\Models\Enums\PirepStatus;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreatePirepTables extends Migration
|
class CreatePirepTables extends Migration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Models\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
|
||||||
class CreateStatsTable extends Migration
|
class CreateStatsTable extends Migration
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Interfaces\Migration;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
|
|
||||||
class CreateFilesTable extends Migration
|
class CreateFilesTable extends Migration
|
||||||
{
|
{
|
||||||
|
@ -2,11 +2,146 @@
|
|||||||
|
|
||||||
namespace App\Interfaces;
|
namespace App\Interfaces;
|
||||||
|
|
||||||
|
use App\Models\Setting;
|
||||||
|
use DB;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Migration
|
* Class Migration
|
||||||
* @package App\Interfaces
|
* @package App\Interfaces
|
||||||
*/
|
*/
|
||||||
abstract class Migration extends \Illuminate\Database\Migrations\Migration
|
abstract class Migration extends \Illuminate\Database\Migrations\Migration
|
||||||
{
|
{
|
||||||
|
protected $counters = [];
|
||||||
|
protected $offsets = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* At a minimum, this function needs to be implemented
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
abstract public function up();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A method to reverse a migration doesn't need to be made
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dynamically figure out the offset and the start number for a group.
|
||||||
|
* This way we don't need to mess with how to order things
|
||||||
|
* When calling getNextOrderNumber(users) 31, will be returned, then 32, and so on
|
||||||
|
* @param $name
|
||||||
|
* @param null $offset
|
||||||
|
* @param int $start_offset
|
||||||
|
*/
|
||||||
|
protected function addCounterGroup($name, $offset = null, $start_offset = 0)
|
||||||
|
{
|
||||||
|
if ($offset === null) {
|
||||||
|
$group = DB::table('settings')
|
||||||
|
->where('group', $name)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($group === null) {
|
||||||
|
$offset = (int) DB::table('settings')->max('offset');
|
||||||
|
if ($offset === null) {
|
||||||
|
$offset = 0;
|
||||||
|
$start_offset = 1;
|
||||||
|
} else {
|
||||||
|
$offset += 100;
|
||||||
|
$start_offset = $offset + 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Now find the number to start from
|
||||||
|
$start_offset = (int) DB::table('settings')->where('group', $name)->max('order');
|
||||||
|
if ($start_offset === null) {
|
||||||
|
$start_offset = $offset + 1;
|
||||||
|
} else {
|
||||||
|
++$start_offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
$offset = $group->offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->counters[$name] = $start_offset;
|
||||||
|
$this->offsets[$name] = $offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the next increment number from a group
|
||||||
|
* @param $group
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getNextOrderNumber($group): int
|
||||||
|
{
|
||||||
|
if (!\in_array($group, $this->counters, true)) {
|
||||||
|
$this->addCounterGroup($group);
|
||||||
|
}
|
||||||
|
|
||||||
|
$idx = $this->counters[$group];
|
||||||
|
++$this->counters[$group];
|
||||||
|
|
||||||
|
return $idx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $key
|
||||||
|
* @param $attrs
|
||||||
|
*/
|
||||||
|
public function addSetting($key, $attrs)
|
||||||
|
{
|
||||||
|
$group = $attrs['group'];
|
||||||
|
$order = $this->getNextOrderNumber($group);
|
||||||
|
|
||||||
|
$attrs = array_merge([
|
||||||
|
'id' => Setting::formatKey($key),
|
||||||
|
'key' => $key,
|
||||||
|
'offset' => $this->offsets[$group],
|
||||||
|
'order' => $order,
|
||||||
|
'name' => '',
|
||||||
|
'group' => $group,
|
||||||
|
'value' => '',
|
||||||
|
'default' => '',
|
||||||
|
'options' => '',
|
||||||
|
'type' => 'hidden',
|
||||||
|
'description' => '',
|
||||||
|
], $attrs);
|
||||||
|
|
||||||
|
return $this->addData('settings', [$attrs]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a setting
|
||||||
|
* @param $key
|
||||||
|
* @param $value
|
||||||
|
* @param array $attrs
|
||||||
|
*/
|
||||||
|
public function updateSetting($key, $value, array $attrs = [])
|
||||||
|
{
|
||||||
|
$attrs['value'] = $value;
|
||||||
|
DB::table('settings')
|
||||||
|
->where('id', Setting::formatKey($key))
|
||||||
|
->update($attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add rows to a table
|
||||||
|
* @param $table
|
||||||
|
* @param $rows
|
||||||
|
*/
|
||||||
|
public function addData($table, $rows)
|
||||||
|
{
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
try {
|
||||||
|
DB::table($table)->insert($row);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
# setting already exists, just ignore it
|
||||||
|
if ($e->getCode() === 23000) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,137 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Migration base class with some extra functionality
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Models\Migrations;
|
|
||||||
|
|
||||||
use App\Interfaces\Migration as MigrationInterface;
|
|
||||||
use App\Models\Setting;
|
|
||||||
use DB;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Migration
|
|
||||||
* @package App\Models\Migrations
|
|
||||||
*/
|
|
||||||
class Migration extends MigrationInterface
|
|
||||||
{
|
|
||||||
protected $counters = [];
|
|
||||||
protected $offsets = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dynamically figure out the offset and the start number for a group.
|
|
||||||
* This way we don't need to mess with how to order things
|
|
||||||
* When calling getNextOrderNumber(users) 31, will be returned, then 32, and so on
|
|
||||||
* @param $name
|
|
||||||
* @param null $offset
|
|
||||||
* @param int $start_offset
|
|
||||||
*/
|
|
||||||
protected function addCounterGroup($name, $offset = null, $start_offset = 0)
|
|
||||||
{
|
|
||||||
if ($offset === null) {
|
|
||||||
$group = DB::table('settings')
|
|
||||||
->where('group', $name)
|
|
||||||
->first();
|
|
||||||
|
|
||||||
if ($group === null) {
|
|
||||||
$offset = (int) DB::table('settings')->max('offset');
|
|
||||||
if ($offset === null) {
|
|
||||||
$offset = 0;
|
|
||||||
$start_offset = 1;
|
|
||||||
} else {
|
|
||||||
$offset += 100;
|
|
||||||
$start_offset = $offset + 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
# Now find the number to start from
|
|
||||||
$start_offset = (int) DB::table('settings')->where('group', $name)->max('order');
|
|
||||||
if ($start_offset === null) {
|
|
||||||
$start_offset = $offset + 1;
|
|
||||||
} else {
|
|
||||||
++$start_offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
$offset = $group->offset;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->counters[$name] = $start_offset;
|
|
||||||
$this->offsets[$name] = $offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the next increment number from a group
|
|
||||||
* @param $group
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getNextOrderNumber($group): int
|
|
||||||
{
|
|
||||||
if (!\in_array($group, $this->counters, true)) {
|
|
||||||
$this->addCounterGroup($group);
|
|
||||||
}
|
|
||||||
|
|
||||||
$idx = $this->counters[$group];
|
|
||||||
++$this->counters[$group];
|
|
||||||
|
|
||||||
return $idx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $key
|
|
||||||
* @param $attrs
|
|
||||||
*/
|
|
||||||
public function addSetting($key, $attrs)
|
|
||||||
{
|
|
||||||
$group = $attrs['group'];
|
|
||||||
$order = $this->getNextOrderNumber($group);
|
|
||||||
|
|
||||||
$attrs = array_merge([
|
|
||||||
'id' => Setting::formatKey($key),
|
|
||||||
'key' => $key,
|
|
||||||
'offset' => $this->offsets[$group],
|
|
||||||
'order' => $order,
|
|
||||||
'name' => '',
|
|
||||||
'group' => $group,
|
|
||||||
'value' => '',
|
|
||||||
'default' => '',
|
|
||||||
'options' => '',
|
|
||||||
'type' => 'hidden',
|
|
||||||
'description' => '',
|
|
||||||
], $attrs);
|
|
||||||
|
|
||||||
return $this->addData('settings', [$attrs]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update a setting
|
|
||||||
* @param $key
|
|
||||||
* @param $value
|
|
||||||
* @param array $attrs
|
|
||||||
*/
|
|
||||||
public function updateSetting($key, $value, array $attrs = [])
|
|
||||||
{
|
|
||||||
$attrs['value'] = $value;
|
|
||||||
DB::table('settings')
|
|
||||||
->where('id', Setting::formatKey($key))
|
|
||||||
->update($attrs);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add rows to a table
|
|
||||||
* @param $table
|
|
||||||
* @param $rows
|
|
||||||
*/
|
|
||||||
public function addData($table, $rows)
|
|
||||||
{
|
|
||||||
foreach ($rows as $row) {
|
|
||||||
try {
|
|
||||||
DB::table($table)->insert($row);
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
# setting already exists, just ignore it
|
|
||||||
if ($e->getCode() === 23000) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user