table('employee_ppe_items', [ 'id' => false, 'primary_key' => ['id'], 'collation' => 'utf8mb4_unicode_ci', 'encoding' => 'utf8mb4', ]); $table ->addColumn('id', 'integer', [ 'identity' => true, 'signed' => false, ]) ->addColumn('employee_id', 'integer', [ 'signed' => false, 'null' => false, ]) ->addColumn('ppe_item_id', 'integer', [ 'signed' => false, 'null' => false, ]) ->addColumn('assigned_date', 'date', [ 'null' => true, 'default' => null, ]) ->addColumn('expiry_date', 'date', [ 'null' => true, 'default' => null, ]) ->addColumn('quantity', 'integer', [ 'signed' => false, 'null' => false, 'default' => 1, ]) ->addColumn('status', 'enum', [ 'values' => [ 'assigned', 'returned', 'expired', 'lost', 'damaged', ], 'null' => false, 'default' => 'assigned', ]) ->addColumn('notes', 'text', [ 'null' => true, 'default' => null, ]) ->addColumn('created_at', 'timestamp', [ 'null' => true, 'default' => 'CURRENT_TIMESTAMP', ]) ->addColumn('updated_at', 'timestamp', [ 'null' => true, 'default' => 'CURRENT_TIMESTAMP', 'update' => 'CURRENT_TIMESTAMP', ]) ->addIndex(['employee_id'], [ 'name' => 'idx_employee_ppe_items_employee_id', ]) ->addIndex(['ppe_item_id'], [ 'name' => 'idx_employee_ppe_items_ppe_item_id', ]) ->addIndex(['status'], [ 'name' => 'idx_employee_ppe_items_status', ]) ->addIndex(['expiry_date'], [ 'name' => 'idx_employee_ppe_items_expiry_date', ]) ->addForeignKey( 'employee_id', 'employees', 'id', [ 'delete' => 'CASCADE', 'update' => 'CASCADE', 'constraint' => 'fk_employee_ppe_items_employee', ] ) ->addForeignKey( 'ppe_item_id', 'ppe_items', 'id', [ 'delete' => 'RESTRICT', 'update' => 'CASCADE', 'constraint' => 'fk_employee_ppe_items_ppe_item', ] ) ->create(); } }