Added motor_testing_master migration, model, resource with dependencies, importer, exporter

This commit is contained in:
dhanabalan
2025-05-31 09:16:39 +05:30
parent 2c90676f62
commit 79ff0b10a7
9 changed files with 914 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
<?php
namespace App\Filament\Exports;
use App\Models\MotorTestingMaster;
use Filament\Actions\Exports\ExportColumn;
use Filament\Actions\Exports\Exporter;
use Filament\Actions\Exports\Models\Export;
class MotorTestingMasterExporter extends Exporter
{
protected static ?string $model = MotorTestingMaster::class;
public static function getColumns(): array
{
return [
ExportColumn::make('id')
->label('ID'),
ExportColumn::make('plant.name'),
ExportColumn::make('item.id'),
ExportColumn::make('isi_model'),
ExportColumn::make('phase'),
ExportColumn::make('hp'),
ExportColumn::make('kw'),
ExportColumn::make('volt'),
ExportColumn::make('current'),
ExportColumn::make('rpm'),
ExportColumn::make('torque'),
ExportColumn::make('frequency'),
ExportColumn::make('connection'),
ExportColumn::make('ins_res_limit'),
ExportColumn::make('ins_res_type'),
ExportColumn::make('res_ry_ll'),
ExportColumn::make('res_ry_ul'),
ExportColumn::make('res_yb_ll'),
ExportColumn::make('res_yb_ul'),
ExportColumn::make('res_br_ll'),
ExportColumn::make('res_br_ul'),
ExportColumn::make('lock_volt_limit'),
ExportColumn::make('leak_cur_limit'),
ExportColumn::make('lock_cur_ll'),
ExportColumn::make('lock_cur_ul'),
ExportColumn::make('noload_cur_ll'),
ExportColumn::make('noload_cur_ul'),
ExportColumn::make('noload_pow_ll'),
ExportColumn::make('noload_pow_ul'),
ExportColumn::make('noload_spd_ll'),
ExportColumn::make('noload_spd_ul'),
ExportColumn::make('created_at'),
ExportColumn::make('updated_at'),
ExportColumn::make('deleted_at'),
ExportColumn::make('created_by'),
ExportColumn::make('updated_by'),
];
}
public static function getCompletedNotificationBody(Export $export): string
{
$body = 'Your motor testing master export has completed and ' . number_format($export->successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.';
if ($failedRowsCount = $export->getFailedRowsCount()) {
$body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.';
}
return $body;
}
}

View File

@@ -0,0 +1,235 @@
<?php
namespace App\Filament\Imports;
use App\Models\MotorTestingMaster;
use Filament\Actions\Imports\ImportColumn;
use Filament\Actions\Imports\Importer;
use Filament\Actions\Imports\Models\Import;
use Filament\Facades\Filament;
class MotorTestingMasterImporter extends Importer
{
protected static ?string $model = MotorTestingMaster::class;
public static function getColumns(): array
{
return [
ImportColumn::make('plant')
->requiredMapping()
->exampleHeader('Plant')
->example(['Ransar Industries-I','Ransar Industries-I','Ransar Industries-I'])
->label('Plant')
->relationship(resolveUsing: 'name')
->rules(['required']),
ImportColumn::make('item')
->requiredMapping()
->exampleHeader('Item Code')
->example(['123456','123456','123456'])
->label('Item Code')
->relationship(resolveUsing: 'code')
->rules(['required']),
ImportColumn::make('isi_model')
->boolean()
->exampleHeader('ISI Model')
->example(['Y','N','Y'])
->label('ISI Model')
->rules(['boolean']),
ImportColumn::make('phase')
->requiredMapping()
->exampleHeader('Phase')
->example(['Single','Three','Single'])
->label('Phase')
->rules(['required']),
ImportColumn::make('hp')
->requiredMapping()
->exampleHeader('HP')
->example(['5','10','5'])
->label('HP')
->rules(['required']),
ImportColumn::make('kw')
->requiredMapping()
->exampleHeader('KW')
->example(['5','7.5','5'])
->label('KW')
->rules(['required']),
ImportColumn::make('volt')
->requiredMapping()
->exampleHeader('Volt')
->example(['230','380','230'])
->label('Volt')
->rules(['required']),
ImportColumn::make('current')
->requiredMapping()
->exampleHeader('Current')
->example(['7','21.8','7'])
->label('Current')
->rules(['required']),
ImportColumn::make('rpm')
->requiredMapping()
->exampleHeader('RPM')
->example(['2500','3420','2500'])
->label('RPM')
->rules(['required']),
ImportColumn::make('torque')
->requiredMapping()
->exampleHeader('Torque')
->example(['0.5','1.25','0.5'])
->label('Torque')
->rules(['required']),
ImportColumn::make('frequency')
->requiredMapping()
->exampleHeader('Frequency')
->label('Frequency')
->example(['50','60','50'])
->rules(['required']),
ImportColumn::make('connection')
->requiredMapping()
->exampleHeader('Connection')
->label('Connection')
->example(['Star','Star-Delta','Delta'])
->rules(['required']),
ImportColumn::make('ins_res_limit')
->requiredMapping()
->exampleHeader('Insulation Resistance Limit')
->label('Insulation Resistance Limit')
->example(['1000','2','1000'])
->rules(['required']),
ImportColumn::make('ins_res_type')
->requiredMapping()
->exampleHeader('Insulation Resistance Type')
->label('Insulation Resistance Type')
->example(['O','G','O'])
->rules(['required']),
ImportColumn::make('res_ry_ll')
->requiredMapping()
->exampleHeader('Resistance RY LL')
->label('Resistance RY LL')
->example(['0.05','0.05','0.05'])
->rules(['required']),
ImportColumn::make('res_ry_ul')
->requiredMapping()
->exampleHeader('Resistance RY UL')
->label('Resistance RY UL')
->example(['99','99','99'])
->rules(['required']),
ImportColumn::make('res_yb_ll')
->requiredMapping()
->exampleHeader('Resistance YB LL')
->label('Resistance YB LL')
->example(['0.05','0.05','0.05'])
->rules(['required']),
ImportColumn::make('res_yb_ul')
->requiredMapping()
->exampleHeader('Resistance YB UL')
->label('Resistance YB UL')
->example(['99','99','99'])
->rules(['required']),
ImportColumn::make('res_br_ll')
->requiredMapping()
->exampleHeader('Resistance BR LL')
->label('Resistance BR LL')
->example(['0.05','0.05','0.05'])
->rules(['required']),
ImportColumn::make('res_br_ul')
->requiredMapping()
->exampleHeader('Resistance BR UL')
->label('Resistance BR UL')
->example(['99','99','99'])
->rules(['required']),
ImportColumn::make('lock_volt_limit')
->requiredMapping()
->exampleHeader('Lock Volt Limit')
->label('Lock Volt Limit')
->example(['80','100','80'])
->rules(['required']),
ImportColumn::make('leak_cur_limit')
->requiredMapping()
->exampleHeader('Leakage Current Limit')
->label('Leakage Current Limit')
->example(['50','50','50'])
->rules(['required']),
ImportColumn::make('lock_cur_ll')
->requiredMapping()
->exampleHeader('Lock Current LL')
->label('Lock Current LL')
->example(['10','12.5','10'])
->rules(['required']),
ImportColumn::make('lock_cur_ul')
->requiredMapping()
->exampleHeader('Lock Current UL')
->label('Lock Current UL')
->example(['15','14.6','15'])
->rules(['required']),
ImportColumn::make('noload_cur_ll')
->requiredMapping()
->exampleHeader('No Load Current LL')
->label('No Load Current LL')
->example(['3','5.9','3'])
->rules(['required']),
ImportColumn::make('noload_cur_ul')
->requiredMapping()
->exampleHeader('No Load Current UL')
->label('No Load Current UL')
->example(['15','6.9','15'])
->rules(['required']),
ImportColumn::make('noload_pow_ll')
->requiredMapping()
->exampleHeader('No Load Power LL')
->label('No Load Power LL')
->example(['250','850','250'])
->rules(['required']),
ImportColumn::make('noload_pow_ul')
->requiredMapping()
->exampleHeader('No Load Power UL')
->label('No Load Power UL')
->example(['500','1200','500'])
->rules(['required']),
ImportColumn::make('noload_spd_ll')
->requiredMapping()
->exampleHeader('No Load Speed LL')
->label('No Load Speed LL')
->example(['2000','2500','2000'])
->rules(['required']),
ImportColumn::make('noload_spd_ul')
->requiredMapping()
->exampleHeader('No Load Speed UL')
->label('No Load Speed UL')
->example(['4000','3500','4000'])
->rules(['required']),
ImportColumn::make('created_by')
->requiredMapping()
->exampleHeader('Created By')
->example([Filament::auth()->user()->name, Filament::auth()->user()->name, Filament::auth()->user()->name])
->label('Created By')
->rules(['required']),
ImportColumn::make('updated_by')
->requiredMapping()
->exampleHeader('Updated By')
->example([Filament::auth()->user()->name, Filament::auth()->user()->name, Filament::auth()->user()->name])
->label('Updated By')
->rules(['required']),
];
}
public function resolveRecord(): ?MotorTestingMaster
{
// return MotorTestingMaster::firstOrNew([
// // Update existing records, matching them by `$this->data['column_name']`
// 'email' => $this->data['email'],
// ]);
return new MotorTestingMaster();
}
public static function getCompletedNotificationBody(Import $import): string
{
$body = 'Your motor testing master import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.';
if ($failedRowsCount = $import->getFailedRowsCount()) {
$body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.';
}
return $body;
}
}

View File

@@ -0,0 +1,402 @@
<?php
namespace App\Filament\Resources;
use App\Filament\Exports\MotorTestingMasterExporter;
use App\Filament\Imports\MotorTestingMasterImporter;
use App\Filament\Resources\MotorTestingMasterResource\Pages;
use App\Filament\Resources\MotorTestingMasterResource\RelationManagers;
use App\Models\Configuration;
use App\Models\Item;
use App\Models\MotorTestingMaster;
use Filament\Facades\Filament;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Filament\Tables\Actions\ImportAction;
use Filament\Tables\Actions\ExportAction;
class MotorTestingMasterResource extends Resource
{
protected static ?string $model = MotorTestingMaster::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\Select::make('plant_id')
->relationship('plant', 'name')
->required()
->reactive()
->default(function () {
return optional(Item::latest()->first())->plant_id;
})
->disabled(fn (Get $get) => !empty($get('id')))
->afterStateUpdated(function ($state, callable $set, callable $get) {
$plantId = $get('plant_id');
if (!$plantId) {
$set('mTmError', 'Please select a plant first.');
return;
}
else
{
$set('mTmError', null);
}
})
->extraAttributes(fn ($get) => [
'class' => $get('mTmError') ? 'border-red-500' : '',
])
->hint(fn ($get) => $get('mTmError') ? $get('mTmError') : null)
->hintColor('danger'),
Forms\Components\Select::make('item_id')
->label('Item')
->options(function (callable $get) {
$plantId = $get('plant_id');
if (!$plantId) {
return [];
}
return Item::where('plant_id', $plantId)
->pluck('code', 'id')
->toArray();
})
->required()
->searchable()
->reactive(),
Forms\Components\Select::make('isi_model')
->label('ISI Model')
->options([
1 => 'Yes',
0 => 'No',
])
->selectablePlaceholder(false)
->default(1)
->required()
->reactive(),
Forms\Components\Select::make('phase')
->label('Phase')
->options(function (callable $get) {
$plantId = $get('plant_id');
// if (!$plantId || !$lineId)
// {
// return [];
// }
if ($plantId)
{
return Configuration::where('plant_id', $plantId)
->where('c_name', 'MOTOR_PHASE')
->pluck('c_value', 'c_value')
->toArray();
}
else
{
return Configuration::where('c_name', 'MOTOR_PHASE')
->pluck('c_value', 'c_value')
->toArray();
}
})
->selectablePlaceholder(false)
->default('Single')
->required()
->reactive(),
Forms\Components\TextInput::make('hp')
->label('HP')
->required(),
Forms\Components\TextInput::make('kw')
->label('KW')
->required(),
Forms\Components\TextInput::make('volt')
->label('Volt')
->required(),
Forms\Components\TextInput::make('current')
->label('Current')
->required(),
Forms\Components\TextInput::make('rpm')
->label('RPM')
->required(),
Forms\Components\TextInput::make('torque')
->label('Torque')
->required(),
Forms\Components\TextInput::make('frequency')
->label('Frequency')
->required(),
Forms\Components\Select::make('connection')
->label('Connection')
->selectablePlaceholder(false)
->options(function (callable $get) {
$plantId = $get('plant_id');
if ($plantId)
{
return Configuration::where('plant_id', $plantId)
->where('c_name', 'MOTOR_CONNECTION')
->pluck('c_value', 'c_value')
->toArray();
}
else
{
return Configuration::where('c_name', 'MOTOR_CONNECTION')
->pluck('c_value', 'c_value')
->toArray();
}
})
->required()
->default('Star')
->reactive(),
Forms\Components\TextInput::make('ins_res_limit')
->label('Insulation Resistance Limit')
->required(),
Forms\Components\TextInput::make('ins_res_type')
->label('Insulation Resistance Type')
->default('O')
->required(),
Forms\Components\TextInput::make('res_ry_ll')
->label('Resistance RY LL')
->required(),
Forms\Components\TextInput::make('res_ry_ul')
->label('Resistance RY UL')
->required(),
Forms\Components\TextInput::make('res_yb_ll')
->label('Resistance YB LL')
->required(),
Forms\Components\TextInput::make('res_yb_ul')
->label('Resistance YB UL')
->required(),
Forms\Components\TextInput::make('res_br_ll')
->label('Resistance BR LL')
->required(),
Forms\Components\TextInput::make('res_br_ul')
->label('Resistance BR UL')
->required(),
Forms\Components\TextInput::make('lock_volt_limit')
->label('Lock Volt Limit')
->required(),
Forms\Components\TextInput::make('leak_cur_limit')
->label('Leakage Current Limit')
->required(),
Forms\Components\TextInput::make('lock_cur_ll')
->label('Lock Current LL')
->required(),
Forms\Components\TextInput::make('lock_cur_ul')
->label('Lock Current UL')
->required(),
Forms\Components\TextInput::make('noload_cur_ll')
->label('No Load Current LL')
->required(),
Forms\Components\TextInput::make('noload_cur_ul')
->label('No Load Current UL')
->required(),
Forms\Components\TextInput::make('noload_pow_ll')
->label('No Load Power LL')
->required(),
Forms\Components\TextInput::make('noload_pow_ul')
->label('No Load Power UL')
->required(),
Forms\Components\TextInput::make('noload_spd_ll')
->label('No Load Speed LL')
->required(),
Forms\Components\TextInput::make('noload_spd_ul')
->label('No Load Speed UL')
->required(),
Forms\Components\Hidden::make('created_by')
->default(fn () => Filament::auth()->user()?->name)
->required(),
Forms\Components\Hidden::make('updated_by')
->default(fn () => Filament::auth()->user()?->name)
->required(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('No.')
->label('No.')
->getStateUsing(function ($record, $livewire, $column, $rowLoop) {
$paginator = $livewire->getTableRecords();
$perPage = method_exists($paginator, 'perPage') ? $paginator->perPage() : 10;
$currentPage = method_exists($paginator, 'currentPage') ? $paginator->currentPage() : 1;
return ($currentPage - 1) * $perPage + $rowLoop->iteration;
}),
Tables\Columns\TextColumn::make('plant.name')
->label('Plant')
->alignCenter()
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('item.code')
->label('Item Code')
->searchable()
->alignCenter()
->sortable(),
Tables\Columns\TextColumn::make('item.description')
->label('Model')
->alignCenter()
->searchable()
->sortable(),
Tables\Columns\IconColumn::make('isi_model')
->label('ISI Model')
->alignCenter()
->boolean(),
Tables\Columns\TextColumn::make('phase')
->label('Phase')
->searchable()
->alignCenter(),
Tables\Columns\TextColumn::make('kw')
->label('KW')
->alignCenter(),
Tables\Columns\TextColumn::make('hp')
->label('HP')
->alignCenter(),
Tables\Columns\TextColumn::make('volt')
->label('Volt')
->alignCenter(),
Tables\Columns\TextColumn::make('current')
->label('Current')
->alignCenter(),
Tables\Columns\TextColumn::make('rpm')
->label('Rpm')
->alignCenter(),
Tables\Columns\TextColumn::make('torque')
->label('Torque')
->alignCenter(),
Tables\Columns\TextColumn::make('frequency')
->label('Frequency')
->alignCenter(),
Tables\Columns\TextColumn::make('connection')
->label('Connection')
->alignCenter(),
Tables\Columns\TextColumn::make('ins_res_limit')
->label('Insulation Resistance Limit')
->alignCenter(),
Tables\Columns\TextColumn::make('ins_res_type')
->label('Insulation Resistance Type')
->alignCenter(),
Tables\Columns\TextColumn::make('res_ry_ll')
->label('Resistance RY LL')
->alignCenter(),
Tables\Columns\TextColumn::make('res_ry_ul')
->label('Resistance RY UL')
->alignCenter(),
Tables\Columns\TextColumn::make('res_yb_ll')
->label('Resistance YB LL')
->alignCenter(),
Tables\Columns\TextColumn::make('res_yb_ul')
->label('Resistance YB UL')
->alignCenter(),
Tables\Columns\TextColumn::make('res_br_ll')
->label('Resistance BR LL')
->alignCenter(),
Tables\Columns\TextColumn::make('res_br_ul')
->label('Resistance BR UL')
->alignCenter(),
Tables\Columns\TextColumn::make('lock_volt_limit')
->label('Lock Volt Limit')
->alignCenter(),
Tables\Columns\TextColumn::make('leak_cur_limit')
->label('Leakage Current Limit')
->alignCenter(),
Tables\Columns\TextColumn::make('lock_cur_ll')
->label('Lock Current LL')
->alignCenter(),
Tables\Columns\TextColumn::make('lock_cur_ul')
->label('Lock Current UL')
->alignCenter(),
Tables\Columns\TextColumn::make('noload_cur_ll')
->label('No Load Current LL')
->alignCenter(),
Tables\Columns\TextColumn::make('noload_cur_ul')
->label('No Load Current UL')
->alignCenter(),
Tables\Columns\TextColumn::make('noload_pow_ll')
->label('No Load Power LL')
->alignCenter(),
Tables\Columns\TextColumn::make('noload_pow_ul')
->label('No Load Power UL')
->alignCenter(),
Tables\Columns\TextColumn::make('noload_spd_ll')
->label('No Load Speed LL')
->alignCenter(),
Tables\Columns\TextColumn::make('noload_spd_ul')
->label('No Load Speed UL')
->alignCenter(),
Tables\Columns\TextColumn::make('created_at')
->dateTime()
->alignCenter()
->sortable(),
Tables\Columns\TextColumn::make('created_by')
->label('Created By')
->alignCenter(),
Tables\Columns\TextColumn::make('updated_at')
->dateTime()
->alignCenter()
->sortable(),
Tables\Columns\TextColumn::make('updated_by')
->label('Updated By')
->alignCenter(),
Tables\Columns\TextColumn::make('deleted_at')
->dateTime()
->alignCenter()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
])
->filters([
Tables\Filters\TrashedFilter::make(),
])
->actions([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
Tables\Actions\ForceDeleteBulkAction::make(),
Tables\Actions\RestoreBulkAction::make(),
]),
])
->headerActions([
ImportAction::make()
->importer(MotorTestingMasterImporter::class)
->visible(function() {
return Filament::auth()->user()->can('view import motor testing master');
}),
ExportAction::make()
->exporter(MotorTestingMasterExporter::class)
->visible(function() {
return Filament::auth()->user()->can('view export motor testing master');
}),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListMotorTestingMasters::route('/'),
'create' => Pages\CreateMotorTestingMaster::route('/create'),
'view' => Pages\ViewMotorTestingMaster::route('/{record}'),
'edit' => Pages\EditMotorTestingMaster::route('/{record}/edit'),
];
}
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);
}
}

View File

@@ -0,0 +1,12 @@
<?php
namespace App\Filament\Resources\MotorTestingMasterResource\Pages;
use App\Filament\Resources\MotorTestingMasterResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateMotorTestingMaster extends CreateRecord
{
protected static string $resource = MotorTestingMasterResource::class;
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Filament\Resources\MotorTestingMasterResource\Pages;
use App\Filament\Resources\MotorTestingMasterResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditMotorTestingMaster extends EditRecord
{
protected static string $resource = MotorTestingMasterResource::class;
protected function getHeaderActions(): array
{
return [
Actions\ViewAction::make(),
Actions\DeleteAction::make(),
Actions\ForceDeleteAction::make(),
Actions\RestoreAction::make(),
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\MotorTestingMasterResource\Pages;
use App\Filament\Resources\MotorTestingMasterResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListMotorTestingMasters extends ListRecords
{
protected static string $resource = MotorTestingMasterResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\MotorTestingMasterResource\Pages;
use App\Filament\Resources\MotorTestingMasterResource;
use Filament\Actions;
use Filament\Resources\Pages\ViewRecord;
class ViewMotorTestingMaster extends ViewRecord
{
protected static string $resource = MotorTestingMasterResource::class;
protected function getHeaderActions(): array
{
return [
Actions\EditAction::make(),
];
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
class MotorTestingMaster extends Model
{
use SoftDeletes;
protected $fillable = [
'plant_id',
'item_id',
'isi_model',
'phase',
'kw',
'hp',
'volt',
'current',
'rpm',
'torque',
'frequency',
'connection',
'ins_res_limit',
'ins_res_type',
'res_ry_ll',
'res_ry_ul',
'res_yb_ll',
'res_yb_ul',
'res_br_ll',
'res_br_ul',
'lock_volt_limit',
'leak_cur_limit',
'lock_cur_ll',
'lock_cur_ul',
'noload_cur_ll',
'noload_cur_ul',
'noload_pow_ll',
'noload_pow_ul',
'noload_spd_ll',
'noload_spd_ul',
'created_by',
'updated_by',
];
public function plant(): BelongsTo
{
return $this->belongsTo(Plant::class);
}
public function item(): BelongsTo
{
return $this->belongsTo(Item::class);
}
}

View File

@@ -0,0 +1,81 @@
<?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
{
$sql = <<<'SQL'
CREATE TABLE motor_testing_masters (
id BIGINT GENERATED always AS IDENTITY PRIMARY KEY,
plant_id BIGINT NOT NULL,
item_id BIGINT NOT NULL,
isi_model BOOLEAN DEFAULT FALSE,
phase TEXT NOT NULL,
hp TEXT NOT NULL,
kw TEXT NOT NULL,
volt TEXT NOT NULL,
current TEXT NOT NULL,
rpm TEXT NOT NULL,
torque TEXT NOT NULL,
frequency TEXT NOT NULL,
connection TEXT NOT NULL,
ins_res_limit TEXT NOT NULL,
ins_res_type TEXT NOT NULL DEFAULT 'O',
res_ry_ll TEXT NOT NULL DEFAULT '0.05',
res_ry_ul TEXT NOT NULL DEFAULT '99',
res_yb_ll TEXT NOT NULL DEFAULT '0.05',
res_yb_ul TEXT NOT NULL DEFAULT '99',
res_br_ll TEXT NOT NULL DEFAULT '0.05',
res_br_ul TEXT NOT NULL DEFAULT '99',
lock_volt_limit TEXT NOT NULL,
leak_cur_limit TEXT NOT NULL,
lock_cur_ll TEXT NOT NULL,
lock_cur_ul TEXT NOT NULL,
noload_cur_ll TEXT NOT NULL,
noload_cur_ul TEXT NOT NULL,
noload_pow_ll TEXT NOT NULL,
noload_pow_ul TEXT NOT NULL,
noload_spd_ll TEXT NOT NULL,
noload_spd_ul TEXT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMP,
created_by TEXT NOT NULL,
updated_by TEXT NOT NULL,
UNIQUE (plant_id, item_id),
FOREIGN KEY (item_id) REFERENCES items (id),
FOREIGN KEY (plant_id) REFERENCES plants (id)
);
SQL;
DB::statement($sql);
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('motor_testing_masters');
}
};